PDF 附件

我要提建议

管理 PDF 里的附件(嵌入式文件):列出已有的、单独导出或打包导出,也能添加新文件、删除不要的 —— 正文与页数完全不动。

相关工具

这个工具是做什么的

PDF 除了页面,还能像压缩包那样「夹带」别的文件:合同后面附一份 Excel、发票附上对账单、扫描件附原始照片、方案书附源码压缩包。这些文件叫附件(规范里的 embedded files),阅读器一般在侧边栏或回形针图标里列出,可以单独导出。它的好处是**不占页面**:正文排版、页数、文字层都不受影响,收件人打开还是原来那份文档,需要时再把附件取出来。这个工具做四件事:① 列出文件里现有的附件(名字 + 体积);② 单独导出某个附件,或把全部附件打包成一个 ZIP;③ 添加新附件(可一次选多个文件,同名会覆盖并明确提示);④ 删除不需要的附件。两点如实说明:① 附件的「名字」是 PDF 内部的名字树(`/EmbeddedFiles`),我们写回时用 UTF-16 存中文名(实测文件里是标准写法),个别老阅读器在名单显示上可能有差异,但内容与导出不受影响;② pdf-lib 没有附件 API,这一层是本项目自己按规范手工构造对象(附件流 + `/Filespec` + 名字树),所以**每次导出都会把产物重新读一遍、数出真实读到的附件数**再报给你。全程在本机用本地引擎完成,数据不出设备。

使用方法

  1. 选择一个 PDF;工具会列出它现有的附件(没有附件也能用,直接添加即可)。
  2. 导出:点某个附件后面的「导出这个」单独保存,或点「打包导出 ZIP」把全部附件一起下载。
  3. 添加:点「添加附件」选一个或多个本地文件;同名附件会被覆盖(界面会提示是哪几个)。
  4. 删除不想要的附件,然后点「导出 PDF」写出新文件 —— 工具会把产物重新读一遍复核附件数,再点「导出文件」保存。

常见问题

附件和正文里的图片有什么区别?
正文里的图片是页面内容的一部分(会影响排版与页数);附件是独立文件,塞在文档的名字树里,阅读器单独列表、单独导出,不参与排版。所以给 PDF 加附件不会让页面变样,也不会多出页。
会不会撑大文件?
会,而且基本等于附件本身的大小(PDF 不做二次压缩)。所以别把几百 MB 的视频塞进 PDF —— 直接发文件更合适;附件适合放几十 KB 到几 MB 的文档、表格、图片。
导出后为什么说「写入 N 个附件(复核读回 N 个)」?
因为附件对象是手工构造的(pdf-lib 没有附件 API),属于容易「写了但读不出来」的操作。工具会把产物重新用 pdf.js 读一遍、数出真实读到的附件数,与你编辑的一致才报成功;不一致会明确提示你打开确认。
删除附件后原文件还留着附件吗?
不会。删除是「按当前清单整体重建名字树」,导出后文件里就没有那些附件了(原文件本身不动,除非你自己覆盖保存)。反过来说,如果你只是查看、没点导出,原文件一个字都不会变。
中文名字的附件在别的阅读器里会乱码吗?
我们按规范用 UTF-16 写名字(实测文件里是 FEFF 开头的标准写法),新版 Acrobat / Preview / Chrome 都能正常显示。个别老阅读器在名单里可能显示乱码,但附件内容与导出不受影响 —— 如果在意,可以给附件起英文名。