@zhangyu756897669
2017-09-29T14:32:21.000000Z
字数 2763
阅读 774
python官方文档
项目:从许多PDF中组合选择页面
假设您将无数的PDF文档合并到一个PDF文件中。他们每个都有一个封面作为第一页,但你不希望封面在最后的结果重复。即使有很多免费程序来组合PDF,但是很多都是将整个文件合并在一起。我们来编写一个Python程序来自定义组合PDF中所需的页面。
实现这个技术的计划是什么:
在实现方面,您的代码将需要执行以下操作:
首先,您的程序需要在当前工作目录中获取.pdf扩展名的所有文件的列表,并对它们进行排序。
#将当前工作目录中的所有PDF都合并到一起
import PyPDF2, os #❶
# 得到所有pdf 的名称
pdfFiles = []
for filename in os.listdir('.'):
if filename.endswith('.pdf'):
pdfFiles.append(filename)#❷
pdfFiles.sort(key=str.lower)#❸
pdfWriter = PyPDF2.PdfFileWriter()#❹
=该代码导入os和PyPDF2模块❶。 os.listdir('。')调用将返回当前工作目录中每个文件的列表。代码循环遍历此列表,并将只有.pdf扩展名的文件添加到pdfFiles❷。之后,该列表按照字母顺序排列,使用key = str.lower关键字参数sort()❸。创建PdfFileWriter对象来保存组合的PDF页面❹
现在程序必须阅读pdfFiles中的每个PDF文件。
#将当前工作目录中的所有PDF都合并到一起
import PyPDF2, os #❶
# 得到所有pdf 的名称
pdfFiles = []
for filename in os.listdir('.'):
if filename.endswith('.pdf'):
pdfFiles.append(filename)#❷
pdfFiles.sort(key=str.lower)#❸
pdfWriter = PyPDF2.PdfFileWriter()#❹
#循环遍历所有的PDF文件。
for filename in pdfFiles:
pdfFileObj = open(filename, 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
对于每个PDF,循环通过调用open()以“rb”作为第二个参数,以二进制模式打开文件名。 open()调用返回一个File对象,该对象被传递给PyPDF2.PdfFileReader()以为该PDF文件创建一个PdfFileReader对象。
对于每个PDF,您将需要循环除第一个以外的每个页面。
#将当前工作目录中的所有PDF都合并到一起
import PyPDF2, os #❶
# 得到所有pdf 的名称
pdfFiles = []
for filename in os.listdir('.'):
if filename.endswith('.pdf'):
pdfFiles.append(filename)#❷
pdfFiles.sort(key=str.lower)#❸
pdfWriter = PyPDF2.PdfFileWriter()#❹
#循环遍历所有的PDF文件。
for filename in pdfFiles:
pdfFileObj = open(filename, 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
#循环遍历所有页面(第一个除外)并添加它们。
for pageNum in range(1, pdfReader.numPages):#❶
pageObj = pdfReader.getPage(pageNum)
pdfWriter.addPage(pageObj)
for循环中的代码将每个Page对象单独复制到PdfFileWriter对象。记住,你想跳过第一页。由于PyPDF2认为0是第一页,所以循环应该从1❶开始,然后上升到pdfReader.numPages中,但不包括整数。
在这些嵌套for循环完成循环后,pdfWriter变量将包含PdfFileWriter对象,并将所有PDF的页面组合在一起。最后一步是将此内容写入硬盘驱动器上的文件。
#将当前工作目录中的所有PDF都合并到一起
import PyPDF2, os #❶
# 得到所有pdf 的名称
pdfFiles = []
for filename in os.listdir('.'):
if filename.endswith('.pdf'):
pdfFiles.append(filename)#❷
pdfFiles.sort(key=str.lower)#❸
pdfWriter = PyPDF2.PdfFileWriter()#❹
#循环遍历所有的PDF文件。
for filename in pdfFiles:
pdfFileObj = open(filename, 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
#循环遍历所有页面(第一个除外)并添加它们。
for pageNum in range(1, pdfReader.numPages):#❶
pageObj = pdfReader.getPage(pageNum)
pdfWriter.addPage(pageObj)
#将生成的PDF保存到文件。
pdfOutput = open('allminutes.pdf', 'wb')
pdfWriter.write(pdfOutput)
pdfOutput.close()
将'wb'传递给open()以二进制模式打开输出PDF文件allminutes.pdf。然后,将生成的File对象传递给write()方法将创建实际的PDF文件。调用close()方法完成该程序。
能够从其他PDF页面创建PDF将允许您制作可执行以下操作的程序: