Haven PDF
首页 › 我的 PDF 为什么这么大?
● Files are never uploaded

我的 PDF 为什么这么大?

上网搜索,每条结果都给出同一个答案:图像。这个建议并不错,但顺序错了——顺序错了,人们就会用错工具。

所以我们选择测量而不是猜测。我们在对象层面拆解了 22 份公开文档——共 1,726 页,包括税务表格、学术论文、机构报告和标准文本——并统计每个字节属于哪个类别。二十二份中有十一份完全不含图像。

打开工具 →

使用方法

  1. 先看每页多少 MB. 用文件大小除以页数。每页超过约 1 MB 指向图像;远低于这个数则指向字体、表单或结构。
  2. 打开对应的工具. 图像密集的文件用压缩——在浏览器里运行,不需上传。
  3. 压缩,或指定目标大小. 选择一个档位,或直接输入平台要求的精确大小。
  4. 确认前先对比. 预览会以 100% 显示质量。如果是黑白文档的彩色扫描件,先试试灰度。

简短的答案取决于文件已经有多大

我们把文档分成三个体积区间,并取每个类别的中位数。用中位数而非平均值,是因为单独一份 6 MB 的图像密集文件就足以拉偏平均值。

文件大小文档数图像字体内容表单字段结构
小于 250 KB80.0%11.6%43.3%12.8%19.7%
250 KB – 1 MB60.0%52.2%14.9%2.8%5.3%
大于 1 MB826.0%6.7%29.3%1.1%10.3%
按体积区间统计的类别占比中位数(n=22 份文档,1,726 页)。“内容”指页面绘制指令;“结构”指交叉引用表、对象头和字典。
PDF 文件结构图:文件头、包含字体、图像、内容流和表单字段的编号对象,然后是交叉引用表和尾部。
字节都在哪里。阅读器从尾部开始,找到交叉引用表,然后直接跳到所需的对象——这就是再大的 PDF 也能瞬间打开的原因。

超过 1 MB 时,通行看法是对的:图像占主导。低于 1 MB 时,字节完全在别处——在嵌入字体里,在绘制指令里,还有几乎没有任何指南提到的东西:表单字段的定义。

原因一 —— 扫描分辨率(在大文件中仍是首要原因)

手机和办公扫描仪默认以 300–600 dpi 彩色扫描。一页 600 dpi 彩色 A4 大致相当于一张 3,500 万像素的图像。在屏幕上阅读,150 dpi 绰绰有余;若用于文本存档,灰度还能再减一半。这是通行建议完全正确的唯一情形——我们的数据也认同:图像主导的文档达到了 85–89%。

文档大小图像占比
6.6 MB89.0%
751 KB85.0%
3.6 MB70.9%
1.5 MB60.1%
6.5 MB31.2%
图像占比最高的五份文档。

解决办法:把文件送进“压缩”。扫描图像会按文档分辨率而非传感器分辨率重新编码。40 MB 的扫描件通常降到 2–4 MB;如果某个平台设有硬性上限,请直接填目标大小,而不是选质量档位。

原因二 —— 嵌入字体,沉默的大多数

在 250 KB – 1 MB 区间,字体占比的中位数是 52.2%。在我们样本的极端情况下超过 85%:文件的绝大部分并不是你读到的文字,而是绘制这些文字的字体程序。

文档大小字体占比
664 KB87.6%
821 KB85.4%
158 KB71.2%
359 KB65.3%
185 KB53.8%
字体占比最高的五份文档。

原因是子集化缺失或只做了一半。PDF 会嵌入它用到的字体;好的生成器只嵌入实际出现的字形。差的生成器——或者把每种字重分别加载的模板——会把整套字符集按变体各嵌入一次。五个字族乘四种字重就是二十个嵌入字体程序,而且没有一个还能再压缩,因为字体文件本身已经压缩过了。

原因三 —— 表单字段,没人计算的负担

可填写表单中的每个输入框、每个复选框、每个下拉列表,都以字典对象的形式存在于文件中:位置、类型、默认值、外观流、校验规则。它们不是流,所以任何压缩工具都不会碰它们——也没有任何指南会把它们算进去。

文档注释数占比
纳税申报表22926.8%
信息表12424.7%
指南(142 页)2,95821.3%
申报附表27521.2%
简表8519.2%
可填写文档中表单与注释定义所占的比例。

一份税务表格的四分之一,不过是你要填写的那些格子的定义。于是很容易得出结论:把表单扁平化——填好之后丢掉这些定义——就能拿回四分之一的体积。我们也测了:拿不回来。

字段数之前之后变化
199215 KB327 KB+52% 变大
105120 KB170 KB+42% 变大
116822 KB874 KB+6% 变大
29664 KB670 KB+1% 变大
12,360 KB2,075 KB−12% 变小
同一样本中九份可填写文档扁平化后的结果。负值表示文件变大了。使用 pdf-lib 测量;其他实现只在幅度上不同,方向一致。

原因四 —— 按原始尺寸粘贴的照片和截图

一份包含五张手机照片的报告,会嵌入五张 1,200 万像素的原图,哪怕每张都只显示成邮票大小:页面显示的是小版本,文件携带的却是大版本。截图在一个特定方面更糟——它们是 PNG,无损而且大,在 Retina 或 4K 屏幕上,一张全屏截图宽达 4,000 像素。

压缩会按图像实际显示的尺寸重新编码;这就是为什么照片密集的报告和塞满截图的演示文稿,常常在阅读尺寸下看不出差别的情况下缩小 80–90%。

你属于哪一种?一张决策表

先用文件大小除以页数——单是这个数字就能立刻缩小范围。

你的情况主要原因真正有用的做法
每页超过约 1 MB,页面看起来像照片图像压缩;黑白扫描件可用灰度
已经填好的可填写表单表单字段扁平化能锁定它,但不会让它变小
纯文字报告,250 KB – 1 MB嵌入字体重新导出;减少字体数量
数百页纯文本内容流已接近最优——拆分更合理
文件小、页数少、没有图像结构与表单字段用会重写文件的编辑器重新导出

这一切都在 Haven PDF 里、在你的浏览器中运行。过大的文件无需上传到任何地方就能变小——也就是说,一份机密合同在你压缩它的整个过程中都留在你自己的电脑上。

压缩 PDF · 灰度

我们如何测量,以及这不能证明什么

我们在对象图层面遍历每份文档,并按每个流的原始长度——它在文件中真正占据的空间——归入类别。图像 XObject 以及带 JPEG、JPX、CCITT 或 JBIG2 过滤器的流计为图像;通过 FontFile、FontFile2 或 FontFile3 引用的流计为字体;其余是内容。已统计流之外的字节视为结构性开销,并从中分离出表单与注释字典。

常见问题

我的 PDF 全是文字却还是很大,为什么?
几乎可以肯定是嵌入字体。在我们的测量中,250 KB 到 1 MB 之间的文字文档,字体占比中位数为 52%,最差的一份达到 88%。图像压缩触及不到那里;用会重写文件的编辑器重新导出才有效。
压缩会让文字变模糊吗?
真正的文字——录入的、而非扫描的——不受图像压缩影响,在任何缩放级别都保持清晰。在扫描件中文字是图像的一部分,因此会受影响;中等档位通常仍能保持清楚可读。
为什么压缩几乎没让我的文件变小?
几乎可以肯定是因为没有图像可压缩。我们测量的二十二份文档中有十一份一张图都没有。看看每页多少 MB:远低于每页 1 MB 通常意味着字体、表单字段或结构。
把表单扁平化真的能省这么多吗?
不能——我们核实过。字段定义占这些文件的 19–27%,但把其中九份扁平化后,中位数文件反而大了约 6%,最差的一份增大了 52%。扁平化是为了锁定表单,不是为了缩小它。
有没有安全的最大压缩程度?
用预览:压缩后以 100% 查看一页文字密集的内容,只有在依然轻松可读时才加大力度。若指定了目标大小,工具会自动选出能放得下的最佳质量。

参考来源

  1. ISO 32000-2:2020 — 文档管理:可移植文档格式对象结构、流过滤器与 AcroForm 字段字典的规范性定义。
  2. PDF 1.7 Reference(Adobe;内容与 ISO 32000-1 相同)字体嵌入(§9.9)、图像 XObject(§8.9)、注释(§12.5)。
  3. 样本:IRS 表格与出版物、arXiv 论文、公共机构报告 — 全部为可公开下载的文档。未使用任何个人或私密文件。

相关工具