1. 思路分析:
合并指定目录下所有pd文件,分析思路如流程图
2.使用的库与代码
1.PyPDF2: 主要能够拆分、合并、裁剪和转换PDF文件的页面。它还可以向PDF文件添加自定义数据、查看选项和密码。
2.os库,这里主要用于遍历指定目录下的文件夹和文件
3.代码
"""
====================================================================
Filename : merge_pdf_files.py
Description : Merge multiple pdf files
Solution:
1 use os.walk get names of pdf files.
2 use PyPDF2 to merge pdf files
Copyright : 2022 wangdada
Revision : $Revision:$
====================================================================
History : @SQELog:$
v1.0 Initial version.
====================================================================
"""
from PyPDF2 import PdfFileReader, PdfFileWriter
import os
class merge_pdf:
"""
Merge multiple pdf files
"""
def __init__(self, pdf_files_dir: str, output_dir: str):
'''
description: inition
:param pdf_files_dir: path of pdf files or full path of pdf file
:param output_dir: full path of output's result
'''
self.pdf_files_dir = pdf_files_dir
self.output_dir = output_dir
self.fileName_list = []
def get_fileName_list(self):
"""
description: get names of pdf files
:return: none
"""
for root, dirs, files in os.walk(self.pdf_files_dir):
for name in files:
if '.pdf' in name:
self.fileName_list.append((os.path.join(root, name)))
def mergePdf(self):
"""
description:merge pdf files
:return: none
"""
pdfFileWrite = PdfFileWriter()
for file in self.fileName_list:
pdfReader = PdfFileReader(open(file, 'rb'))
numPages = pdfReader.getNumPages()
for index in range(0, numPages):
pageObj = pdfReader.getPage(index)
pdfFileWrite.addPage(pageObj)
pdfFileWrite.write(open(self.output_dir, 'wb'))
if __name__ == '__main__':
#这里需要填写要合并的pdf所在目录,注意最后一个\需要转义,所以有两个\\
pdf_file_dir = r"D:\wang\task\测试文档整理\数据\文档\03_AUTOSAR需求\AutoSAR标准协议\Diag\\"
#这里输入最后合并出来的pdf的全局路径
output_dir = r"D:\wang\task\测试文档整理\数据\test\combile_pdf.pdf"
mergePdf = merge_pdf(pdf_file_dir, output_dir)
mergePdf.get_fileName_list()
mergePdf.mergePdf()
4.注意事项
1.第一个输入:填写要合并的pdf所在目录需要注意,填写时最后有两个斜杠(一个用于转义),该代码会合并所给目录下的所有pdf文件,顺序文章开头已给出。
2.第二个输入:填写结果文件为全局路径, 最后的.pdf别忘了
5.运行结果演示
1.由输入:
pdf_file_dir = r"D:\wang\task\测试文档整理\数据\文档\03_AUTOSAR需求\AutoSAR标准协议\Diag\\"
output_dir = r"D:\wang\task\测试文档整理\数据\test\combile_pdf.pdf"
2.在上面路径查看:
合并前:
合并后:
最后,感谢阅读,原创不易,转载请标明来源!