多个pdf文件的合并,参考网上代码,并修改了一部分,加了注释

# -*- coding:utf-8*-
# 利用PyPDF2模块合并同一文件夹下的所有PDF文件
# 只需修改存放PDF文件的文件夹变量:file_dir 和 输出文件名变量: outfile

import os
from PyPDF2 import PdfFileReader, PdfFileWriter
import time

# 使用os模块的walk函数,搜索出指定目录下的全部PDF文件
# 获取同一目录下的所有PDF文件的绝对路径
def getFileName(filedir):

    file_list = [os.path.join(root, filespath) \
                 for root, dirs, files in os.walk(filedir) \
                 for filespath in files \
                 if str(filespath).endswith('pdf')
                 ]
    return file_list if file_list else []

# 合并同一目录下的所有PDF文件
def MergePDF(filepath, outfile):

    output = PdfFileWriter()
    outputPages = 0
    pdf_fileName = getFileName(filepath)

    if pdf_fileName:
        for pdf_file in pdf_fileName:
            print("路径:%s"%pdf_file)

            # 读取源PDF文件
            input = PdfFileReader(pdf_file, strict = False)  
            #之前在csdn上找的程序里面在运行时都出现了多页pdf合并时报错的情况,去网上找了一下,代码修改成了这样,便可以使用了。
            #PyPDF2.PdfFileReader(stream,strict = True,warndest = None,overwriteWarnings = True)
            # stream:*File 对象或支持与 File 对象类似的标准读取和查找方法的对象,也可以是表示 PDF 文件路径的字符串。*
            # strict(bool): 确定是否应该警告用户所用的问题,也导致一些可纠正的问题是致命的,默认是 True
            # warndest : 记录警告的目标(默认是 sys.stderr)
            # overwriteWarnings(bool):确定是否 warnings.py 用自定义实现覆盖 Python 模块(默认为 True)



            # 获得源PDF文件中页面总数
            pageCount = input.getNumPages()
            outputPages += pageCount
            print("页数:%d"%pageCount)

            # 分别将page添加到输出output中
            for iPage in range(pageCount):
                output.addPage(input.getPage(iPage)) #将每一页添加到目标文件中

        print("合并后的总页数:%d."%outputPages)
        # 写入到目标PDF文件
        outputStream = open(os.path.join(filepath, outfile), "wb")  #返回的是合并后的文件的路径: D:/boss/pdf/Cheat_Sheets.pdf
        print(os.path.join(filepath, outfile))
        output.write(outputStream)  #将添加到此对象output的页面集合写入 PDF 文件

        outputStream.close()
        print("PDF文件合并完成!")

    else:
        print("没有可以合并的PDF文件!")

# 主函数
def main():
    file_dir = r'D:/boss/pdf/' # 存放PDF的原文件夹
    outfile = "Cheat_Sheets.pdf" # 输出的PDF文件的名称
    MergePDF(file_dir, outfile)
    
main()

你可能感兴趣的:(多个pdf文件的合并,参考网上代码,并修改了一部分,加了注释)