合并 PDF 是日常办公与开发中的高频需求,小到合并报告章节,大到构建文档自动化管理系统,都离不开这一操作。对开发人员而言,用 Python 编程实现 PDF 合并,不仅能大幅提升效率,还能轻松集成到自动化工作流中,解决批量处理、定时执行等场景的需求。 本文将介绍如何使用 Spire.PDF for Python 实现 PDF 文件合并。
目录:
- 使用 Python 合并 PDF 的 5 大核心优势
- 如何使用 Python 合并 PDF 文件
- 进阶操作:使用 Python 合并多个 PDF 中的指定页面
- 批量处理:一键合并文件夹内所有 PDF
- 常见问题
- 结论
使用 Python 合并 PDF 的 5 大核心优势
虽然 Adobe Acrobat、WPS 等 GUI 工具能实现基础合并,但面对企业级或自动化需求时,Python 的优势尤为明显,尤其适合以下场景:
- 批量处理需求:一次合并几十 / 上百个 PDF,无需手动逐一选择文件;
- 定时自动化:通过脚本调度(如 Windows 任务计划、Linux Cron),实现每日 / 每周报告自动合并;
- 工作流集成:与 Excel 数据统计、数据库文档导出等流程联动,生成一体化报告;
- 自定义逻辑:按需添加「合并前筛选文件」「合并后添加水印」等业务逻辑;
- 跨环境部署:支持服务器、云环境运行。
如何使用 Python 合并 PDF 文件
步骤1:安装 Python PDF 库
在使用 Spire.PDF for Python 合并 PDF 之前,需要先安装该库。支持通过 pip 快速安装:
pip install Spire.PDF
步骤2:将多个 PDF 文件合并为一个
以下是将多个 PDF 文件合并为单个 PDF 的 Python 代码。
1. 导入所需的类
首先,从 Spire.PDF 库中导入必要的类:
from spire.pdf.common import *
from spire.pdf import *
2. 定义要合并的 PDF 文件的路径
定义三个 PDF 文件路径并将它们存储在列表中。你可以根据需要修改这些路径或调整文件数量。
inputFile1 = "示例1.pdf"
inputFile2 = "示例2.pdf"
inputFile3 = "示例3.pdf"
files = [inputFile1, inputFile2, inputFile3]
3. 合并 PDF 文件
MergeFiles() 方法将列表中的所有 PDF 合并为一个新的 PDF 文档对象。
pdf = PdfDocument.MergeFiles(files)
4. 保存合并后的 PDF 文件
最后,将合并后的PDF保存到指定的输出路径。
pdf.Save("output/合并PDF.pdf", FileFormat.PDF)
完整 Python 代码:
from spire.pdf.common import *
from spire.pdf import *
# 创建 PDF 文件路径的列表
inputFile1 = "Sample1.pdf"
inputFile2 = "Sample2.pdf"
inputFile3 = "Sample3.pdf"
files = [inputFile1, inputFile2, inputFile3]
# 合并 PDF 文档
pdf = PdfDocument.MergeFiles(files)
# 保存结果文档
pdf.Save("output/合并PDF.pdf", FileFormat.PDF)
pdf.Close()
结果: 将三个 PDF 文件(共6页)合并为一个 PDF 文件。

进阶操作:使用 Python 合并多个 PDF 中的指定页面
有时不需要合并整个 PDF,只需提取部分页面(如示例1.pdf的第 1 页、示例2.pdf的第 2 页),Spire.PDF 支持精准选页合并,核心是通过InsertPage(单页)和 InsertPageRange(多页范围)实现。
from spire.pdf import *
from spire.pdf.common import *
# 定义要处理的 PDF 文件路径
file1 = "示例1.pdf"
file2 = "示例2.pdf"
file3 = "示例3.pdf"
files = [file1, file2, file3]
# 加载所有 PDF 文件(转换为 PdfDocument 对象,方便后续选页)
pdfs = []
for file in files:
pdfs.append(PdfDocument(file))
# 创建一个新的空 PDF(用于存放合并后的页面)
newPdf = PdfDocument()
# 将 PDF 中的选定页面插入到新文档中
newPdf.InsertPage(pdfs[0], 0)
newPdf.InsertPage(pdfs[1], 1)
newPdf.InsertPageRange(pdfs[2], 0, 1)
# 保存新的 PDF 文档
newPdf.SaveToFile("output/复制页面合并PDF.pdf")
说明:
- PdfDocument():初始化一个新的 PDF 文档对象。
- InsertPage():将指定页面插入到新PDF中(页面索引从0开始)。
- InsertPageRange():将指定页面范围插入到新 PDF 中。
- SaveToFile():将合并后的 PDF 保存到指定的输出路径。
结果:将三个不同 PDF 文件中的选定页面合并到一个新的PDF中。

批量处理:一键合并文件夹内所有 PDF
如果需要合并某个文件夹内的所有 PDF,无需手动写每个文件路径,通过 os 库遍历文件夹即可实现全自动合并。
import os
from spire.pdf.common import *
from spire.pdf import *
# 指定要批量处理的文件夹路径
folder = "pdf_folder/"
# 创建新的空 PDF(用于存放合并结果)
merged_pdf = PdfDocument()
# 遍历文件夹内所有文件,筛选出 PDF 并合并
for file in os.listdir(folder):
# 只处理后缀为.pdf的文件(忽略其他格式)
if file.endswith(".pdf"):
pdf = PdfDocument(os.path.join(folder, file))
# 将每个源 PDF 中的所有页面附加到新 PDF 中
merged_pdf.AppendPage(pdf)
pdf.Close() # 关闭源 PDF
# 处理完所有文件后保存合并的 PDF 文档
merged_pdf.SaveToFile("BatchCombinePDFs.pdf")
merged_pdf.Close() # 释放资源
常见问题
Q1:Spire.PDF for Python 是免费的吗?
A: Spire.PDF for Python 提供 30天免费试用。或者可以使用免费版本,但有页面限制。
Q2:能合并扫描件(纯图像 PDF)吗?合并后能提取文字吗?
A: 分两种情况:
- 合并扫描件:支持!Spire.PDF 可直接合并纯图像 PDF,合并后格式与原文件一致;
- 提取文字:需额外搭配 Spire.OCR for Python(OCR 文字识别库)来识别图像中的文字。
Q3:如何为合并后的 PDF 添加页码?
A: 请参考这份详细指南:Python 为 PDF 文档添加页码
Q4:合并后的 PDF 太大,如何压缩?
A: 主要通过压缩 PDF 中的图像和字体实现,具体可参考官方教程:Python 压缩 PDF 文档。
结论
借助 Spire.PDF for Python,只需几行代码就可以高效地将多个 PDF 文件合并为一个文档。无论你需要合并整个文档、特定页面还是进行批量合并,本文都提供了详细步骤说明和代码,助您实现自动化合并 PDF。 如果需要进一步扩展功能(如添加水印、加密 PDF),可参考 Spire.PDF 官方文档,里面包含更多 PDF 处理的实操案例。







