PDF 压缩解析
"压缩这个 PDF"听起来像是一个操作,但 PDF 可以通过几种独立的方式压缩。知道哪个是哪个有助于你理解压缩工具能做什么和不能做什么,以及为什么有些 PDF 大幅缩小而另一些几乎不动。
基础
有损 vs 无损
无损压缩在不丢失任何信息的情况下减小文件大小 — 解压后的数据与原始数据逐字节相同。有损压缩以微小的视觉变化换取更小的体积。照片通常有损压缩(JPEG);文本和线条艺术通常无损压缩(Flate)。
优秀的 PDF 压缩工具只在质量权衡可接受时才对图像应用有损压缩。文本和矢量图形应始终精确保留。
图像
PDF 中的图像压缩
PDF 可以用几种编解码器存储图像:
- JPEG — 有损,适合照片。图像密集 PDF 中尺寸的最常见来源。
- Flate(zlib) — 无损,适合线条艺术和颜色较少的图像。
- JBIG2 — 有损或无损,专为二值(黑白)扫描文本设计。可大幅缩小扫描页面,但支持不均匀。
- CCITT Group 4 — 无损,二值图像的经典传真压缩。
将图像从过大的 JPEG 重新编码为较小的 JPEG 是大多数 PDF 最有效的尺寸缩减。
字体
字体子集化
如文件大小指南所述,嵌入字体可能主导一个小 PDF。子集化只嵌入实际使用的字形。一个用 250 KB 字体显示单个标题的文档可以降到 8 KB 子集,且无可见变化。大多数现代 PDF 写入器默认子集化;较旧的或某些导出路径则不会。
结构
对象流
PDF 1.5 引入了对象流:将许多小对象(元数据、页面描述、字体描述符)打包到单个压缩流中的方法。较旧的 PDF 单独存储每个对象,各有其开销。用对象流重新保存可以从文本密集文档中削去可观的比例,而不触及任何可见内容。
这是始终安全的压缩部分 — 纯结构性的、无损的、对阅读器不可见。
限制
压缩做不到的事
无损压缩不会缩小已经编码良好的 PDF。如果文件已使用对象流、子集化字体并以合理压缩的 JPEG 存储图像,就没有多少结构性冗余可削。承诺对每个文件都有大幅缩减的工具通常在暗中应用有损图像重新编码 — 这可能没问题,但这是你应有意做出的质量决定,而非免费午餐。
加密也与压缩正交。加密 PDF 会增加少量开销,但不会显著改变内容的压缩效果,因为压缩流是按字节加密的。先压缩再加密的 PDF 既更小又受保护。
实践中
压缩工具做什么
当你将 PDF 通过压缩 PDF工具处理时,安全的无损步骤是:用对象流重新保存、丢弃未引用对象、压缩交叉引用表。仅这些就常能将旧导出器的文档减小 10–40%。更大的收益需要重新编码图像,这是用户应有意做出的单独有损决定。
继续阅读
相关资源
继续阅读