目录:
- 拆分 PDF 文件
- 合并 PDF 文件
如果希望从大型 PDF 文件中提取特定页面或将多个 PDF 文件合并为一个文件,可以使用一些 PDF 编辑器来完成,但是你可能会发现拆分或合并功能在很多免费版 PDF 编辑工具中通常不可用。在本文中,我将分享一个简单的解决方案,用几行 Python 代码拆分或合并多个 PDF 文件。
Python 中的 PyPDF3 库提供了读取、合并、写入 pdf 文件的类,方便程序员完成 Pdf 文件的处理操作。
- PdfFileReader: 用于执行与读取文件相关的所有操作。
- PdfFileMerger: 用于将多个 pdf 文件合并在一起。
- PdfFileWriter: 用于对 pdf 执行写入操作。
使用 PyPDF3 处理 Pdf 文件,需要在工作环境中安装此库。
pip install PyPDF3
拆分 PDF 文件
想从 PDF 文件中提取特定页面并使其成为单独的 PDF 文件时,可以使用 PdfFileReader 读取原始文件,然后获取特定页面(页码从 0 开始)。使用 PdfFileWriter 的 addPage() 方法将 PDF 页面添加到新的 PDF 中并保存。
下面的示例代码中,从“1.Pdf”提取第一页,并将其存储到一个名为“2.pdf” 的 PDF 文件中。
from PyPDF3 import PdfFileWriter, PdfFileReader
input_pdf = PdfFileReader("1.pdf")
output = PdfFileWriter()
output.addPage(input_pdf.getPage(0))
with open("2.pdf", "wb") as out:
output.write(out)
拓展
可以使用 getNumPages() 方法,获取 Pdf 中的页码,灵活的进行页面处理。
下面的示例代码中,从“1.Pdf”分别提取偶数页和奇数页,并将其分别存储到“2.pdf”和“3.pdf”中。
from PyPDF3 import PdfFileWriter, PdfFileReader
input_pdf = PdfFileReader("1.pdf")
output2 = PdfFileWriter()
output3 = PdfFileWriter()
for page in range(input_pdf.getNumPages()):
current_page = input_pdf.getPage(page)
if page % 2 == 0:
output2.addPage(current_page)
else:
output3.addPage(current_page)
with open("2.pdf", "wb") as out:
output2.write(out)
with open("3.pdf", "wb") as out:
output3.write(out)
合并 PDF 文件
要将多个 PDF 文件合并为一个文件,可以使用 PdfFileMerger 来实现。虽然也可以使用 PdfFileWriter,但是当在合并页面之前不需要编辑页面时,PdfFileMerger 可能更直接。
下面示例代码中,使用 PdfFileMerger 的 append() 方法将多个 PDF 文件合并写入一个名为 merged.pdf 的 PDF 文件中。
from PyPDF3 import PdfFileReader, PdfFileMerger
pdf_file1 = PdfFileReader("1.pdf")
pdf_file2 = PdfFileReader("2.pdf")
output = PdfFileMerger()
output.append(pdf_file1)
output.append(pdf_file2)
with open("3.pdf", "wb") as out:
output.write(out)
如果不想包含原始文件中的所有页面,可以指定一个具有起始页码和结束页码的元组作为 append() 的页面参数,以便仅将指定的页面添加到新 PDF 文件中。
output.append(pdf_file1, (0, 10)) # 前十页
append() 是在文件最后添加新页面,如果想指定要放入页面的位置,则应使用 merge(),允许指定要添加的页面的位置。