投标与申报材料归档
营业执照、资质证书、授权书通常是分开扫描的 PDF,招标文件要求「一个 PDF 按目录顺序」。把它们全部拖进工作台,按目录排好,横向扫描的页面先在缩略图里转正,再合并。
使用指南
PDF 合并把两个或更多 PDF 文件按你指定的先后顺序拼接成一个新的 PDF,整个过程在浏览器里完成,文件不离开你的电脑。
更新于 2026-09-09复核:owner5 个来源约 15 分钟读完
PDF 合并把两个或更多 PDF 文件按你指定的先后顺序拼接成一个新的 PDF,整个过程在浏览器里完成,文件不离开你的电脑。
它面向的是这样一些时刻:投标前要把封面、正文、资质扫描件交成一份;导师要求论文和附录合成一个文件;报销时把十几张发票的 PDF 合到一起打印;把每章单独导出的讲义合成一本。共同点是:内容已经是 PDF,你只需要它们变成一份、顺序正确。
与很多在线合并站点不同,这里的合并不是「上传—排队—下载」,而是浏览器读入文件后直接在内存里重建一份新 PDF。这也决定了它的边界:处理速度取决于你的设备,能处理多大的文件取决于浏览器可用内存,而不是某个服务器配额。
合并只是 PDF 工作台的一个面板。同一个工作区里,你还可以在合并前旋转、删除、重排任何一个文件的单页,合并后的结果又能「加入工作区继续处理」——加水印、加页码、压缩,都在同一个页面里接着做。
本页上方就是 PDF 工作台本体:添加几个 PDF、在左侧列表排好顺序、切到「合并」面板执行即可。
下面是一次真实运行的记录。三个输入文件分别是 1 页纵向封面、8 页纵向正文和 2 页横向附录,合并时保持了各自的页面尺寸和方向:
输入(按列表顺序)
cover.pdf 1 页 A4 纵向 1.6 KB
report.pdf 8 页 A4 纵向 7.9 KB
appendix.pdf 2 页 A4 横向 2.6 KB
输出
合并文档.pdf 11 页 10.7 KB
页 1 ← cover 第 1 页
页 2–9 ← report 第 1–8 页
页 10–11 ← appendix 第 1–2 页(仍是横向)
输出体积略小于三个输入之和,是因为新文件用「对象流」重新压缩了内部结构(见原理一节);如果输入里含有大量图片,输出体积基本等于各输入之和,合并本身不会压缩图片。

顺序错了不必重新添加文件,直接在左侧列表里上移、下移即可。下面的对比展示了把「附件」从第一位移到最后一位前后的列表状态:
调整前附件排在第一位;把它移到列表末尾后,输出顺序变为封面、正文、附件。
文本文件可以直接拼接,PDF 不行。PDF 是一张对象引用图:文件由编了号的对象组成,末尾的交叉引用表记录每个对象的字节偏移,阅读器从文档目录出发顺着引用找到页面树,「第几页」是页面树遍历的顺序而不是文件里的物理位置。两个文件各有自己的对象编号(都从 1 开始)、各有自己的交叉引用表,直接接在一起会让编号冲突、偏移量全错,阅读器要么打不开,要么只认第二个 %%EOF 之前的内容。对象模型、页面树与增量更新的完整介绍见 PDF 文件结构入门(站内指南,尚未公开),这里只讲与合并直接相关的部分。
这个工具用 pdf-lib 在浏览器里完成合并,步骤是:
/Page 对象以及它引用到的一切(内容流、字体、图片、批注)深拷贝进新文档,并分配新的对象编号,修好所有引用。/Rotate 属性上(PDF 规定该值必须是 90 的整数倍,所以工作台的旋转也只提供 90° 步进)。工作台里的旋转、删除、重排都是对这份「页面清单」的操作,真正执行时才按清单去源文件取页,所以在合并前做再多整理都是零成本的。
「复制页面」是按页面为单位拷贝资源的。如果三个输入文件都嵌入了同一款字体,新文档里会有三份这款字体——pdf-lib 不会跨文件识别「这两个字体对象其实一样」并去重。图片也一样,每张图片跟着它所在的页面进来。因此合并后的体积至少是各文件之和。
更需要知道的是:为了支持逐页旋转与重排,工作台是一页一次调用「复制页面」的,而资源去重只在同一次调用内部有效。于是一个文件里 8 页共用的同一份嵌入字体,会被复制 8 次。实测一份嵌入了 Arial 子集的 8 页文档(17.5 KB)与 1 页封面合并,输出是 121 KB——字体被复制了 8 遍。对以嵌入字体为主的文字文档,这会让输出比输入之和大几倍;对图片各不相同的扫描件,则几乎没有影响,因为本来每页的图片就只属于那一页。
反过来,输出有时会略小于输入之和,原因是序列化时默认启用了 PDF 1.5 引入的对象流(Object Streams):把大量小对象打包进一个流再整体 Deflate 压缩,结构开销减少了。上面示例里 12.1 KB 变 10.7 KB 就是这个效果(示例用的是 PDF 内建的标准 14 字体,没有嵌入字体文件,所以没有触发上面的膨胀),它对图片体积没有任何作用。
「复制页面」只带走页面级的东西。文档级的结构挂在文档目录下、不属于任何一页,因此不会进入新文件(判断方法见指南里「页面之外的东西」一节):
跨页内部链接(比如目录页里的「跳到第 5 章」)如果是通过命名目标实现的,合并后会失效;直接指向页面对象的链接在同一文件内部通常仍然有效。
PDF 的标准安全处理器会用一把从密码派生的密钥加密所有字符串和流。pdfjs 拿到密码后可以解密渲染,但 pdf-lib 的加载器不带解密实现,遇到 /Encrypt 字典会直接拒绝。所以在工作台里输入密码只能让你看到缩略图,合并时仍会提示「已加密,无法直接编辑」。正确做法是先到「解锁 PDF」里用密码生成一份无加密的副本,再拿副本来合并——这一步同样在本地完成。
2-。营业执照、资质证书、授权书通常是分开扫描的 PDF,招标文件要求「一个 PDF 按目录顺序」。把它们全部拖进工作台,按目录排好,横向扫描的页面先在缩略图里转正,再合并。
导师或期刊要求正文、图表附录、伦理审批扫描件合成一个文件提交。合并后到「页码」面板给全部页面加连续页码,再到「元数据」填写标题与作者。
十几张电子发票分别下载后,合成一份便于一次打印和留档。若发票 PDF 带有数字签名,合并会重写文件结构,签名将失效——归档留原件,打印用合并件。
按章节导出的课件合并成整本,章节之间插入空白页作为分隔,然后用「N 合 1」排成每张 A4 两页,节省纸张。
没有数量上限。体积受浏览器内存限制:一般台式机上合并几百 MB 的扫描件是可行的,手机浏览器可用内存明显更少,建议单次控制在 100 MB 以内。超过 200 MB 的文件会有提示,但不会被拒绝。
不需要。页面加载完成后可以断网操作。PDF 解析、渲染缩略图和生成新文件都在本地完成,字体映射表等资源也随站点一起分发,不依赖外部服务。
书签属于文档级结构,合并时不会被复制。目录页上的跳转链接如果依赖命名目标也会失效。这是「按页复制」这一实现方式的固有代价,不是文件损坏。
可以,用「PDF 拆分」按范围拆回去,内容不会有损失。但拆出来的文件不会恢复原文件的书签和属性。
两个原因叠加:不同源文件里相同的字体不会被去重;同一文件内多页共用的嵌入字体会被逐页复制(工作台为了支持单页旋转与重排而逐页复制)。含嵌入字体的文字文档因此可能膨胀数倍,扫描件几乎不受影响。目前的替代办法是:合并完成后不必再处理,或在需要极小体积时用「PDF 压缩」——但后者会把页面变成图片、文字不可再选中,请权衡。
可以。先点选文件,在中间区域删除不需要的页(或只保留选中页),再执行合并。删除只影响这次输出,不改动源文件。
全部处理在你的浏览器本地完成:文件通过浏览器的 File API 读入内存,pdf.js 负责显示缩略图,pdf-lib 负责重建新文件,均运行在本机。没有任何字节被发送到服务器,站点也不记录你处理过什么文件。关闭或刷新页面后,内存中的文件即被释放。
PDFDocument.copyPages API:https://pdf-lib.js.org/(访问日期:2026-09-08)更新于 2026-09-09 · 复核:owner
多个 PDF 按顺序合并为一个文件
所有处理均在你的浏览器本地完成,文件不会上传到任何服务器