官网:https://github.com/mstamy2/PyPDF2

    安装

    1. pip install PyPDF2

    完整版使用方法:

    1. # -*- coding:utf-8*-
    2. # 利用PyPDF2模块合并同一文件夹下的所有PDF文件
    3. # 只需修改存放PDF文件的文件夹变量:dir_path 和 输出文件名变量: file_name
    4. import os
    5. from PyPDF2 import PdfFileReader, PdfFileWriter
    6. import time
    7. # 使用os模块的walk函数,搜索出指定目录下的全部PDF文件
    8. # 获取同一目录下的所有PDF文件的绝对路径
    9. def getFileName(filedir):
    10. file_list = [os.path.join(root, filespath)
    11. for root, dirs, files in os.walk(filedir)
    12. for filespath in files
    13. if str(filespath).endswith('pdf')
    14. ]
    15. return file_list if file_list else []
    16. # 合并同一目录下的所有PDF文件
    17. def MergePDF(filepath, file_name):
    18. output = PdfFileWriter()
    19. outputPages = 0
    20. pdf_fileName = getFileName(filepath)
    21. if pdf_fileName:
    22. for pdf_file in pdf_fileName:
    23. print("路径:%s" % pdf_file)
    24. # 读取源PDF文件
    25. input = PdfFileReader(open(pdf_file, "rb"))
    26. # 获得源PDF文件中页面总数
    27. pageCount = input.getNumPages()
    28. outputPages += pageCount
    29. print("页数:%d" % pageCount)
    30. # 分别将page添加到输出output中
    31. for iPage in range(pageCount):
    32. output.addPage(input.getPage(iPage))
    33. print("合并后的总页数:%d." % outputPages)
    34. # 写入到目标PDF文件
    35. outputStream = open(os.path.join(filepath, file_name), "wb")
    36. output.write(outputStream)
    37. outputStream.close()
    38. print("PDF文件合并完成!")
    39. else:
    40. print("没有可以合并的PDF文件!")
    41. # 主函数
    42. def main():
    43. time1 = time.time()
    44. dir_path = r'D:\BaiduNetdiskDownload\pdf' # 存放PDF的原文件夹
    45. file_name = "AAA.pdf" # 输出的PDF文件的名称
    46. MergePDF(dir_path, file_name)
    47. time2 = time.time()
    48. print('总共耗时:%s s.' % (time2 - time1))
    49. main()
    1. # -*- coding:utf-8*-
    2. # 利用PyPDF2模块合并同一文件夹下的所有PDF文件
    3. # 只需修改存放PDF文件的文件夹变量:dir_path 和 输出文件名变量: file_name
    4. import os
    5. from PyPDF2 import PdfFileReader, PdfFileWriter
    6. def GetFileName(dir_path):
    7. file_list = [os.path.join(dirpath, filesname)
    8. for dirpath, dirs, files in os.walk(dir_path)
    9. for filesname in files]
    10. return file_list
    11. def MergePDF(dir_path, file_name):
    12. output = PdfFileWriter()
    13. outputPages = 0
    14. file_list = GetFileName(dir_path)
    15. for pdf_file in file_list:
    16. print("文件:%s" % pdf_file.split('\\')[-1], end=' ')
    17. # 读取PDF文件
    18. input = PdfFileReader(open(pdf_file, "rb"))
    19. # 获得源PDF文件中页面总数
    20. pageCount = input.getNumPages()
    21. outputPages += pageCount
    22. print("页数:%d" % pageCount)
    23. # 分别将page添加到输出output中
    24. for iPage in range(pageCount):
    25. output.addPage(input.getPage(iPage))
    26. print("\n合并后的总页数:%d" % outputPages)
    27. # 写入到目标PDF文件
    28. print("PDF文件正在合并,请稍等......")
    29. with open(os.path.join(dir_path, file_name), "wb") as outputfile:
    30. # 注意这里的写法和正常的上下文文件写入是相反的
    31. output.write(outputfile)
    32. print("PDF文件合并完成")
    33. if __name__ == '__main__':
    34. # 设置存放多个pdf文件的文件夹
    35. dir_path = r'D:\BaiduNetdiskDownload\pdf'
    36. # 目标文件的名字
    37. file_name = "BBB.pdf"
    38. MergePDF(dir_path, file_name)