1. 使用PyPDF2合并PDF
为什么要合并PDF文件
首先,我们来搞清楚为什么需要合并多个PDF文件。毕竟俗话说得好:“一个PDF总比十个强!” 在工作中,你可能会有报告、研究结果、技术文档或演示文稿,它们通常是以单独的文件形式提供的。不断在它们之间切换不仅麻烦,还可能造成遗漏。通过将所有文件合并为一个文档,你可以简化数据管理并创建更具结构化的分析和分发方式。
此外,合并PDF文件更适合存档、创建完整的最终报告,或者将多个版本的文档汇总跟踪更改。总之,用途多多!
使用PyPDF2合并PDF的基本操作
首先,让我们掌握使用PyPDF2的基本操作。我们将创建一个脚本,把多份PDF合并为一个。当然,代码会附带注释,帮助你理解每一步都在做什么。
import PyPDF2
# 创建一个 PdfMerger 对象
pdf_merger = PyPDF2.PdfMerger()
# 我们想要合并的PDF文件列表
pdf_files = ['document1.pdf', 'document2.pdf', 'document3.pdf']
# 遍历每个文件并添加到 PdfMerger
for file in pdf_files:
pdf_merger.append(file)
# 将结果保存到新的PDF文件中
output_filename = 'merged_document.pdf'
with open(output_filename, 'wb') as output_file:
pdf_merger.write(output_file)
# 关闭 PdfMerger 对象以释放资源
pdf_merger.close()
print(f"已创建合并的PDF: {output_filename}")
合并文档的顺序和结构
现在我们已经学会了合并PDF文档,是时候考虑页面顺序了。请记住,PyPDF2 会按照你传递给 .append()
方法的文件顺序添加页面。因此,列表 pdf_files
的顺序会直接影响最终文档中的页面顺序。
2. 合并单独的页面
如果你不是想合并整个文档,而是从中挑选部分内容组装成最终的文档,那么需要使用 PdfWriter
类而不是 PdfMerger
。示例代码如下:
import PyPDF2
# 需要合并的PDF文件列表
pdf_files = ["file1.pdf", "file2.pdf", "file3.pdf"]
# 创建 PdfWriter 对象来写入合并的PDF
pdf_writer = PyPDF2.PdfWriter()
# 遍历每个PDF文件
for pdf_file in pdf_files:
with open(pdf_file, "rb") as file:
pdf_reader = PyPDF2.PdfReader(file)
# 遍历文件中的每一页并添加到 PdfWriter
for page_num in range(len(pdf_reader.pages)):
# 可以跳过你不想添加的页面
page = pdf_reader.pages[page_num]
pdf_writer.add_page(page)
# 保存最终的合并PDF
with open("merged_document.pdf", "wb") as output_file:
pdf_writer.write(output_file)
此代码如何工作?
-
创建文件列表: 列表
pdf_files
包含需要合并的PDF文档路径。 -
初始化 PdfWriter:
pdf_writer
被用来创建新的PDF文件。 - 遍历每个文件: 每一个PDF文件都会以只读模式打开。
-
添加页面: 文件中的每一页都会被依次添加到
pdf_writer
中,方法是使用add_page()
。 -
保存结果: 所有页面添加完成后,将新PDF文件写入
merged_document.pdf
。
3. 美化新文档
添加书签和目录
如果你的合并文档过于庞大,难以导航怎么办?这时书签就派上用场了!PyPDF2 支持添加基本的书签,帮助你更方便地在文档中导航。让我们为每个合并的文档添加书签。
pdf_merger = PyPDF2.PdfMerger()
# 用于书签的页面偏移
page_offset = 0
for file in pdf_files:
# 读取当前文档
pdf_reader = PyPDF2.PdfReader(file)
# 将文档添加到 PdfMerger
pdf_merger.append(file)
# 添加以文件名为名字的书签
pdf_merger.add_bookmark(file, page_offset)
# 更新页面偏移
page_offset += len(pdf_reader.pages)
with open(output_filename, 'wb') as output_file:
pdf_merger.write(output_file)
pdf_merger.close()
这个小技巧可以帮你保持冷静,在PDF海洋中不迷失。
更新合并文件的元数据
合并后,我们可以添加或修改文档的元数据,比如作者、标题和关键词。
import PyPDF2
pdf_files = ["file1.pdf", "file2.pdf"]
pdf_writer = PyPDF2.PdfWriter()
for pdf_file in pdf_files:
with open(pdf_file, "rb") as file:
pdf_reader = PyPDF2.PdfReader(file)
for page_num in range(len(pdf_reader.pages)):
page = pdf_reader.pages[page_num]
pdf_writer.add_page(page)
# 添加元数据
pdf_writer.add_metadata({
"/Title": "合并文档",
"/Author": "Ivan Ivanov",
"/Subject": "销售报告"
})
# 保存合并文件
with open("merged_with_metadata.pdf", "wb") as output_file:
pdf_writer.write(output_file)
该代码为文档添加了元数据,帮助识别和构建结构化的文档。
GO TO FULL VERSION