PDF 工具

如何安全地把多个 PDF 文件合并成一个文档

把分散的 PDF 报告、发票和章节合并成一个文档,顺序由您决定,并且不会把任何内容发送到服务器。

合并到底是怎么做到的

PDF 是一个容器。每一页都是一个对象,各自带着自己的内容流、字体和图片,文件把这些对象包在一张交叉引用表里,记录每样东西存放的位置。合并不会重新渲染或重新编码其中任何内容,而是创建一个空白的新文档,把各页对象复制过去,再写入一张新的交叉引用表。

这个区别比听上去更重要。因为没有任何重新编码,合并后文件里的文字仍然是文字,而不是文字的图片,所以依旧可以检索和选中。扫描页会保留它们原来的分辨率,300 DPI 的发票不会悄悄变成 150 DPI,JPEG 伪影也不会像反复重新导出图片那样不断累积。如果您曾经用某个工具合并过 PDF,结果所有内容都被拍平成图片、文件体积还翻了倍,那说明那个工具是在渲染页面,而不是复制页面。

把顺序排对

文件按照它们在队列中的顺序合并,每个文件会先贡献完自己的所有页面,下一个文件才开始。拖动一行可以移动它,也可以用上下箭头,在手机上箭头比拖动更好用,因为拖动不太方便。每一行左边的数字,就是这个文件在最终文档里所在的位置。

两个习惯能省时间。添加文件之前就用编号前缀给它们命名,比如 01-封面、02-正文、03-附录,让它们自动排好顺序。然后在合并之前检查一遍编号,而不是合并之后。这个阶段调整顺序不花任何代价,因为还没有开始处理。只有点击按钮,合并才会真正执行。

哪些会保留,哪些不会

页面内容会完整送达:文字、矢量图形、嵌入的图片和字体。每一页的尺寸和方向都会单独保留,所以把 A4 竖版和 US Letter 横版混在一起合并,得到的文档里每一页都会保持自己原本的尺寸,而不会被拉伸去迁就相邻的页面。

有些东西经不起这趟旅程,最好提前知道:

  • 书签和文档大纲不会被复制过去。合并后的文件一开始没有任何导航树,如果您正在拼合一份很长、需要方便别人在里面跳转的文档,这点值得留意。
  • 可交互的表单字段可能不再表现得像字段。如果要合并可填写的表单,请先把它们填好并拍平。
  • 受密码保护的文件根本打不开。合并会直接报错终止,而不是悄悄丢掉这个文件,所以开始之前请先去掉密码。

文件大小会怎么变化

大致可以预期是各部分大小之和,再加一点结构性开销。合并不是压缩,所以一个 4 MB 的文件和一个 6 MB 的文件合并后,大小会接近 10 MB。如果结果需要控制在邮件附件的上限以内,先压缩源文件再合并。压缩合并后的文件同样可行,但这样您就没法再对每份文档分别处理,而当其中一份是照片很多的扫描件、其余是纯文字时,这一点就很重要。

为什么这个工具在您的浏览器里运行

人们最常需要合并的文档,恰恰是最不愿意交给陌生人的那种:签好字的合同、病历、税务文件、签证申请用的护照扫描件。在网上合并它们的常见做法,是把每个文件都上传到别人的服务器,接受一份您没法核实的保留政策,然后寄望对方真的会按说明删除文件。

这个工具不会把文件发送到任何地方。合并过程就在您已经打开的这个页面里进行,使用一个叫 pdf-lib 的 JavaScript 库完成,生成的文档会直接写入您的下载文件夹。这一点您也不必只凭信任。打开浏览器的开发者工具,切换到网络面板,合并点什么试试。您会看到第一次使用这个工具时,库文件本身被下载了下来,之后就再没有别的请求。没有任何请求携带您的文档,因为根本没有发出过这样的请求。代码下载到您的浏览器,和您的文件被上传出去,完全是两回事。

什么时候桌面软件是更好的选择

在浏览器里合并,受限于一个标签页所能使用的内存。几十份普通文档完全没问题。但拼合一份两千页的扫描档案就不轻松了,能以流的方式直接访问磁盘的桌面软件会处理得好得多。跨越几百个文件的逐页精细操作,或者需要按计划反复运行的批处理任务,也是同样的道理。对于普通情况,也就是把几份文档排好顺序、拿回一个文件,浏览器既是更快的路径,也是更私密的路径。

动手试试

PDF 合并会在当前标签页中把您的文件合并成一个 PDF,全程无需上传。

打开 PDF 合并