先看几个真实场景,看有没有你也遇到过的:
拆分场景
- 一份百页投标书,技术和商务部分需要分开提交
- 从扫描的杂志 PDF 中提取需要的文章页
- 把多个学生的答卷合并扫描成一个 PDF 后,需要按人拆分开
合并场景
- 将每周的工作周报合并为一份季度汇总
- 把合同的正文、附件、签章页合并在一个文件里发出去
- 手机拍了多页文件照片转成 PDF 后,需要合并为一个文件
拆分和合并其实是同一类需求的正反两面------调整 PDF 的页面结构。下面按不同的使用条件来选方案。
二、方案一:在线工具(浏览器打开即用)
在线方案适合电脑上没装 Acrobat、或者偶尔才需要操作一次的情况。以 91aitool.cn 为例,它的 PDF 拆分和 PDF 合并是两个独立功能,操作互不干扰。
PDF 拆分
你上传一份 PDF,然后在文本框中输入页码范围,就可以提取出需要的页面。我试下来常用的格式有这么几种:
1-3------ 提取第 1 到第 3 页1,3,5------ 提取第 1、3、5 页1-3,5,7-9------ 混合范围也支持,多个范围之间用逗号隔开- 留空不填 ------ 那就每页拆成一个独立文件
选好范围点击转换就行,单文件最大支持 300MB,大部分文档都够用。拆分结果如果是多范围提取,会打成一个压缩包一起下载。
用的时候有个小经验:不确定页码范围的话,先用阅读器打开 PDF 看一下总页数,再回过来填。我一开始以为这是废话,直到有次把范围写反了------1-3 写成 3-1,服务端不认识这种反向范围,直接不处理,白等了好几分钟。

PDF 合并
合并功能的操作逻辑有点不同:不是上传单个文件,而是同时上传多个 PDF,然后通过拖拽调整它们的顺序,排好之后点合并就行。
一个可能需要注意的地方是:顺序调整要靠拖拽左侧的手柄,不是直接拖文件名。我第一次用的时候试着拖了文件名区域没反应,后来才发现手柄区才是拖拽位。
合并后的文件保留各自原始的排版和页面尺寸------A4 和 A3 混在一起也没问题,阅读器会自动适应。单个文件上限是 100MB,如果你手头的 PDF 特别大可以先压缩一下再用。
两个功能都需要微信扫码登录才能使用,服务端处理完后会自动删除你的文件,不保留副本。

三、方案二:Adobe Acrobat Pro(本地处理,有页面预览)
如果你在电脑上安装了 Adobe Acrobat Pro(不是免费的 Reader),那么拆分和合并都可以在本地完成,不需要上传文件。
拆分操作
- 用 Acrobat Pro 打开 PDF
- 点击右侧工具栏的 "组织页面",你会看到每一页的缩略图
- 按住
Ctrl点击选中需要的页面,右键选择 "提取页面" - 弹窗里可以勾选"提取为单独文件"或者"提取后删除原页面"
- 保存结果
有缩略图预览是 Acrobat 的优势------你能直接看到每一页的内容,不容易选错。
合并操作
- 顶部菜单 "工具" → "合并文件"
- 点击"添加文件",选多个 PDF
- 合并列表里可以直接拖拽文件名调顺序
- 点击"合并"
我在公司处理标书的时候习惯用 Acrobat,因为每页都能看到内容,提取或删除之前心里有底。不过 Acrobat Pro 是订阅付费的,如果只是偶尔用一次,专门买一个不太划算。
四、方案三:Python + PyMuPDF(批量处理首选)
如果需要处理的文件很多,或者想把拆分合并做成自动化流程的一部分,Python 的 PyMuPDF 库是最顺手的选择。
python
pip install PyMuPDF
PDF 拆分代码
python
import fitz
import os
def extract_pdf_pages(input_path, output_path, page_spec):
"""从 PDF 中提取指定页面
page_spec: 列表, 每个元素是页码范围或页码, 如 ['1-3', '5', '7-9']
"""
doc = fitz.open(input_path)
out = fitz.open()
for spec in page_spec:
if '-' in spec:
start, end = map(int, spec.split('-'))
out.insert_pdf(doc, from_page=start-1, to_page=end-1)
else:
page = int(spec) - 1
out.insert_pdf(doc, from_page=page, to_page=page)
out.save(output_path)
out.close()
doc.close()
print(f"已提取 {sum(len(r.split(',')) for r in page_spec)} 页 → {output_path}")
# 示例: 提取第 1-3 页和第 5、7-9 页
extract_pdf_pages('report.pdf', 'extracted.pdf', ['1-3', '5', '7-9'])
PDF 合并代码
python
import fitz
def merge_pdf_files(input_files, output_path):
"""合并多个 PDF 文件"""
merged = fitz.open()
for file_path in input_files:
with fitz.open(file_path) as doc:
merged.insert_pdf(doc)
merged.save(output_path)
merged.close()
print(f"合并完成: {len(input_files)} 个文件 → {output_path}")
# 示例: 按文件顺序合并
merge_pdf_files(['cover.pdf', 'body.pdf', 'appendix.pdf'], 'full.pdf')
实用技巧:从文件夹自动合并
应付"每周要把一堆 PDF 按文件名排序合并"这种重复劳动时,可以加个排序逻辑:
python
import os, glob
def merge_from_folder(folder, output_path):
"""按文件名排序合并文件夹中所有 PDF"""
files = sorted(glob.glob(os.path.join(folder, '*.pdf')))
merge_pdf_files(files, output_path)
merge_from_folder('./weekly_reports/', 'Q1_report.pdf')
脚本方案的优势是批量处理------几百个文件交给脚本跑完就行。缺点是需要一点 Python 基础,而且没有可视化界面,选页的时候得靠记页码。我个人一般把这些脚本存起来,下次遇到类似场景直接改个路径就能跑。
五、方案对比
| 维度 | 在线工具 | Adobe Acrobat Pro | Python + PyMuPDF |
|---|---|---|---|
| 安装要求 | 无需安装 | 需付费订阅 | 需安装 Python |
| 操作系统 | 全平台 | Win / Mac | 全平台 |
| 离线使用 | 需联网 | 支持 | 支持 |
| 文件大小限制 | 拆分 300MB / 合并 100MB | 不限 | 不限 |
| 页面预览 | 无 | 有缩略图 | 无 |
| 拖拽排序 | 拆分不可 / 合并支持 | 支持 | 不支持(靠代码控制) |
| 批量处理 | 不支持 | 可建动作脚本 | 最适合 |
| 操作直观度 | 高 | 高 | 需要编程 |
| 适用频率 | 偶尔 | 日常频繁 | 大量重复 |
场景推荐
- 临时拆分一份大文件,或者把几份 PDF 合成一份 → 在线工具,开网页就用上了
- 页面结构复杂,需要看缩略图确认再操作 → Adobe Acrobat Pro
- 每天成百上千份 PDF 需要处理 → Python 脚本,跑完收工
- 文件涉及敏感信息不能上传服务器 → Acrobat 或脚本本地处理
六、两个小提醒
- 用之前确认页数。不管用哪个方案,先把 PDF 在阅读器里打开看一眼总页码,避免范围填错重新来一遍。
- 合并前检查页面尺寸。A4 和 A3 混在一起虽然能合并,但打印时要注意纸张设置,不然打印出来的排版可能会有缩放。
本文提到的在线工具仅为方法示例,请根据实际需求选择适合的方案。