PDF 怎么合并?三种方法对比与本地合并的完整步骤
把多份 PDF 拼成一个文件是高频需求:合同正本 + 附件一起发、多张扫描件归档、报告的分章合并。本文对比三条路径,并给出「验证工具没有偷传文件」的方法。
为什么合并场景值得挑剔工具
合并的输入往往是合同、证件扫描、财务凭证——恰恰是最不该交给陌生服务器的文件。判断一个在线合并工具是否真的本地运行,方法依然是那一条:打开 DevTools 的 Network 面板,拖入文件后看有没有新请求发出。真正的纯前端工具一条请求都不会有。
三种路径对比
| 路径 | 适合谁 | 门槛 |
|---|---|---|
| 浏览器本地合并(如 ToolVault PDF 合并) | 偶发合并、不想装软件 | 最低 |
命令行 qpdf / pdftk | 脚本化、批量、CI | 需要命令行环境 |
| 桌面软件(Acrobat 等) | 重度办公、含编辑需求 | 安装与付费 |
- qpdf 是命令行合并的事实标准:
qpdf --empty --pages a.pdf b.pdf -- out.pdf一条命令完成,速度快且可脚本化。缺点是 Windows 用户需要先装环境。 - 桌面软件功能最全(页级编辑、书签合并),但为偶发需求装一个重型软件不划算,且很多「免费版」会在合并结果上加页脚水印。
- 浏览器本地合并(ToolVault PDF 合并)在加载完页面后断网也能用——文件字节在
pdf-lib的内存对象里完成拷贝,输出直接从浏览器下载。
合并的三个实操细节
顺序就是列表顺序
多数工具按加入顺序拼接。ToolVault 的合并页支持上下箭头调整顺序,并在列表里显示每个文件的页数——合并前核对总页数(文件1页数 + 文件2页数 + …)能避免「少拼了一个文件」这类静默错误。
加密文件会静默失败
带密码(加密字典)的 PDF 无法被直接解析,好的工具会明确报错而不是输出一个损坏文件。遇到报错时先用 owner password 解密(qpdf --decrypt in.pdf out.pdf)再合并。
页面尺寸不统一是正常的
A4 混 Letter、横向混纵向在合并结果里完全合法——PDF 的每页有独立尺寸。如果需要统一,那是「页面缩放」功能,不是合并的职责,别指望合并工具顺手做。
常见问题
合并后文件更大了? 直接拼接不做重编码,体积 ≈ 各文件之和。要变小走压缩(PDF 压缩),两步分开做结果更可控。
能只合并每个文件的一部分吗? 那是拆分 + 合并的组合:先用 PDF 拆分 按区间提取,再合并提取结果。
手机上能合并吗? 可以,现代手机浏览器的内存足以处理几 MB 到几十 MB 的常规文档;上百 MB 的扫描合集建议换桌面。
实现注记
做合并工具时踩过的坑:pdf-lib 的 copyPages 对含交叉引用流的 PDF(多数扫描仪输出)兼容良好,但对损坏的 xref 表会抛错而非跳过——所以工具必须在合并前逐个 load 预检并报出具体是哪个文件坏了,否则用户面对「合并失败」四个字无从排查。另外 iOS Safari 对 Blob.arrayBuffer 的旧版本缺失需要 FileReader 回退,这是移动端文件类工具的通用坑。
结论
偶发合并用浏览器本地工具最省事(ToolVault PDF 合并,文件不上传);脚本化场景 qpdf 无可替代;重度编辑再考虑桌面软件。选哪条路径前,先用 Network 面板验证一下工具的行为——包括我们的。