Python
pdf分割与重组
pdf文件是我们日常工作中最常见的文件格式之一,其是一种广泛使用的电子文档格式,具有良好的可移植性,小巧的文件大小,高质量的显示效果,以及可编辑性有限等许多优点,适用于商业场景,也适用于个人使用。
##问题描述
在日常工作中,当遇到需要大批量处理pdf文件时,通常大家都会选择在网上寻找相关的批量处理工具来提高工作效率,然而现实并不是那么如你所愿,因为现有的处理工具不是需要大量的人工介入,就是只能批量处理相同的文件,总之不能很好的满足用户的需求,而且由于文件数量的庞大与极高的相似度等原因,会导致工作人员容易产生疲劳或者疏忽,进而影响工作效率。
##解决方法
Python在自动化办公方面有很多实用的第三方库,可以很方便的处理word、excel、ppt、pdf文件,如:pdfplumber、pypdf2,其中前者适用于按页处理pdf的文字、图像等信息,后者更适用于分割、合并、裁剪和转换 PDF 文件页面。它还可以添加自定义数据、查看选项和密码到 PDF 文件。
基于作者所遇到的问题,本文只介绍pdf文档的分割与重组方法。pdfplumber、pypdf2环境的安装与具体应用可参考python操作pdf总结。
PyPDF2分割与重组
```python
import datetime
import PyPDF2
from PyPDF2 import PdfReader, PdfWriter
#定义函数
def OperatePdf_Func():
fileNum = 1000 #fileNum为文件数量,依据实际情况而定
for index in range(fileNum):
src_File_Reader = PdfReader("C:\\...\\src\\*.pdf") #C:\\...\\*.pdf表示源文件路径
target_File_Reader = PdfReader("C:\\...\\target\\*.pdf")#C:\\...\\target\\*.pdf表示目标文件路径
# 实例化对象
new_pdf_writer = PdfWriter()
for page in range(len(target_File_Reader.pages)):
# 将遍历的每一页添加到实例化对象中
new_pdf_writer.add_page(target_File_Reader.pages[page])
src_pdfPageNum = len(src_File_Reader.pages)
for page_src in range(src_pdfPageNum ):
# 将遍历的每一页添加到实例化对象中
new_pdf_writer.add_page(src_File_Reader.pages[page_src])
with open("C:\\...\\out\*.pdf",'wb') as out: #C:\\...\\out\*.pdf表示输出文件路径
new_pdf_writer.write(out)
startTime = datetime.datetime.now()
OperatePdf_Func()
endTime = timedate.timedate.now()
print('操作完成,总耗时:%s' %(endTime - startTime))