目录:

  • 拆分 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(),允许指定要添加的页面的位置。