这个工具能做什么
它只做两件事。合并:按列表中的顺序,把多个PDF首尾相接,生成一个新的PDF。拆分:从一个PDF中把你指定的页面收集成新文件,或把每一页都单独存成一个文件。 常见用途是把申请表、证件复印件和附件合成一个文件提交,或者只把一份长报告里的某几章发给同事。 页面旋转、文件内调换页序、编辑内容、压缩体积,以及把其他格式转成PDF,都不在它的功能范围内。
文件在哪里处理
页面使用开源库pdf-lib(本项目中为1.17.1版)。这个库在网站发布时就已打包进页面自身的脚本里,使用时并不是从第三方CDN临时加载。 选中文件后,代码用file.arrayBuffer()读取内容,用PDFDocument.load打开,用copyPages把页面复制到新文档,再用save生成结果,以内存中的Blob形式交给浏览器下载。 页面代码中没有把PDF内容发往网络的步骤,所以不会上传,也不会保存。想自己验证的话,可以打开浏览器开发者工具的“网络”面板再执行合并,不会出现携带你文件的请求。 网站通用的部分(例如广告、统计脚本)与PDF处理相互独立,拿不到你的文档。关闭或刷新标签页后,内存中的数据即被丢弃。
合并的行为
文件无论分几次选择,都会追加到列表末尾;每一行显示文件名和大小,并有上移、下移、删除三个按钮。至少有两个文件时合并按钮才可用。 输出文件名固定为merged.pdf,完成后会显示合并了几个文件、共多少页以及结果的大小。同一个文件添加两次就会出现两次,所以也可以用来重复插入签字页或空白分隔页。 由于页面是被复制而不是重新渲染,文字仍可选中,图片也不会被二次压缩:画质不变,体积也不会变小,结果大小接近各输入文件之和。 如果结果太大不方便发邮件,可以在把图片放进文档之前,先用图片压缩工具缩小图片。
页码范围的写法
“仅提取所选页面”会按你输入的页码生成一个extracted.pdf。用英文逗号分隔多段,连续页用连字符,例如1-3,5。页码从1开始,结果按输入顺序排列,所以3,2,1会得到倒序的三页。 像5-3这样前大后小的范围会自动按3到5处理。超过文档总页数的页码以及无法识别的片段会被忽略,输入框下方会实时显示实际将提取多少页、哪些部分被忽略。 下表是在网站构建时,按同样的规则针对一份10页的文档计算出来的结果。
| 输入 | 提取的页面 | 页数 | 被忽略的部分 |
|---|---|---|---|
1-3,5 | 1, 2, 3, 5 | 4 | - |
5-3 | 3, 4, 5 | 3 | - |
2,2,4 | 2, 2, 4 | 3 | - |
8-12 | 8, 9, 10 | 3 | 8-12(超出范围的页已忽略) |
7- | (无) | 0 | 7- |
0,3 | 3 | 1 | 0(超出范围) |
1-2,9-10 | 1, 2, 9, 10 | 4 | - |
2,2,4这样重复写同一页,输出里就会有两份第2页。8-12不会报错,而是只取到第10页。7-这种“从第7页到最后”的写法不被支持,会被忽略,请写成7-10。 “将所有页面逐一拆分”会把N页的文档变成N个单页PDF,并依次列出page-1.pdf、page-2.pdf……的下载按钮。它不会自动保存,需要哪一页就点哪个按钮。页数很多时,因为要逐页生成文档,会花些时间。
计算示例
- 合并申请材料:12页的合同、3页的证件复印件、1页的银行证明,按此顺序合并,共 12 + 3 + 1 = 16 页。
- 按范围提取:在30页的报告里输入
1-3,10,25-30,得到 3 + 1 + 6 = 10 页。若输入25-35,超出30页的部分被舍弃,只提取第25到30页,共6页。 - 把最后一页提到最前:在5页的文档中输入
5,1-4,结果依次为第5页、第1至4页,仍是5页。
限制与注意事项
- 设有密码(加密)的PDF:没有输入密码的入口。pdf-lib在默认设置下不会打开加密文件,因此会提示失败。合并时只要有一个文件失败,整个合并就会中止,不会生成结果。
- 文件大小与数量:代码对数量和体积没有设上限,但选中的文件都会整体读入内存,输出也在内存里组装,所以实际上限取决于你的设备。总量达到几百MB或在手机上时,可能变慢甚至失败,这时请分批合并。
- 可能丢失的内容:页面被复制到全新的文档中,书签(目录)、标题和作者等文档属性,以及部分表单域、链接、批注,不保证保留。重要文件请打开结果核对。
- 损坏或特殊的PDF:结构损坏或由特殊软件生成的PDF可能无法读取。用其他软件“打印为PDF”重新保存后,往往就能打开。
- 仅支持PDF:文件选择框只接受PDF。Word文档和图片需要先在别处转成PDF。
- 逐页下载按钮是临时的:它们只存在于当前页面,刷新或重新选择文件后就会消失,需要的页面请立刻保存。
得到文件之后
发送之前,建议用PDF阅读器打开结果,确认页序正确、没有遗漏。如果上传的网站有大小限制,与其勉强压缩,有时直接用页码范围拆成两个文件更稳妥。 包含个人信息的文件一旦下载,就已离开这个工具的保护范围,请只通过可信的渠道传递。
常见问题
我选择的PDF会保存在服务器上吗?
不会。合并和拆分都只在浏览器内进行,用的是随页面一起发布的库;代码中没有发送文件的步骤,结果在内存中生成并直接下载到你的设备。
最多可以合并多少个文件?
工具本身没有设上限,实际限制来自浏览器内存,因设备而异。如果页面变卡或合并失败,可以先两三个一组合并,再把得到的文件合并在一起。
有密码的PDF能处理吗?
不能。这里没有输入密码的方式,加密文件无法打开。如果你有权限,请先用已去除保护的副本。
合并会降低画质或改变文件大小吗?
都不会。页面原样复制,画质不变;但图片也不会被重新压缩,所以结果大小与原文件之和相近。
可以调整页序或倒序吗?
合并标签页里只能按文件调整顺序。拆分标签页中,你输入的顺序就是输出的顺序:3,2,1可倒序三页,5,1-4可把5页文档的最后一页移到最前。
逐页拆分后能一次性全部保存吗?
没有打包成ZIP的功能,每一页对应一个下载按钮。如果需要多页,用页码范围提取成一个文件更方便。