PDF 压缩:如何在不损失质量的情况下减小文件大小
· 12分钟阅读
PDF 文件以膨胀到难以管理的大小而闻名,尤其是当它们包含高分辨率图像、嵌入字体或复杂图形时。无论您是尝试通过电子邮件发送文档、将其上传到有大小限制的网络门户,还是只是节省存储空间,了解如何有效压缩 PDF 都是必不可少的。
本综合指南将引导您了解 PDF 压缩的技术细节,从理解是什么使 PDF 变大到实施保持质量的实用压缩策略。您将了解不同的压缩算法、命令行工具,以及何时使用有损与无损技术。
目录
为什么 PDF 会变大
PDF 从根本上说是一种容器格式,可以容纳多种类型的内容:文本、图像、字体、矢量图形、JavaScript、多媒体元素和大量元数据。了解是什么导致文件大小增加是有效压缩的第一步。
PDF 规范允许令人难以置信的灵活性,但这是有代价的。您添加的每个元素都会增加文件大小,如果没有适当的优化,即使是简单的文档也可能变得出奇地大。
| 来源 | 典型影响 | 示例 | 解决方案 |
|---|---|---|---|
| 高分辨率图像 | 文件大小的 60-90% | 一张 300 DPI 的照片可能有 5-15 MB | 降采样至 150 DPI 用于屏幕查看 |
| 嵌入字体 | 每个字体 200 KB - 5 MB | CJK 字体每个可能超过 10 MB | 使用字体子集化仅包含使用的字形 |
| 未压缩的流 | 比需要的大 2-5 倍 | 没有 Flate 压缩的文本和矢量数据 | 在 PDF 创建期间应用流压缩 |
| 重复资源 | 可变 | 每页嵌入相同的图像 | 引用资源一次,跨页面重用 |
| 元数据和缩略图 | 100 KB - 2 MB | 页面缩略图、XMP 元数据、编辑历史 | 删除不必要的元数据和缩略图 |
| 增量保存 | 10-50% 开销 | 每次保存都追加更改而不是重写 | 线性化或重写整个 PDF 结构 |
使用我们的 PDF 信息工具 来准确分析文件中什么在占用空间。这个诊断步骤在应用压缩之前至关重要,因为它告诉您应该将优化工作集中在哪里。
专业提示:图像几乎总是主要罪魁祸首。如果您的 PDF 超过 5 MB,在担心字体或元数据之前,首先检查图像分辨率和压缩设置。
理解压缩方法
PDF 压缩不是单一技术,而是应用于文档内不同内容类型的一系列策略。每种类型的内容——图像、文本、字体、矢量图形——都需要不同的方法。
图像降采样
降采样是图像密集型 PDF 最有效的压缩技术。它通过减少像素数量来降低图像分辨率,从而直接减小文件大小。一张 300 DPI 的图像降采样到 150 DPI 后,像素数量大约变为四分之一。
有三种主要的降采样方法:
- 双三次降采样 — 通过使用三次函数平均像素邻域来提供最佳质量。此方法产生平滑的渐变,非常适合照片和复杂图像。
- 平均降采样 — 比双三次更快,以更简单的方式平均像素。质量略低,但对于大多数用例仍然可以接受。
- 子采样 — 最快的方法,只是选择最近的像素而不进行平均。可能产生块状伪影,只应在速度至关重要且质量次要时使用。
您选择的分辨率完全取决于文档的预期用途。屏幕查看很少需要超过 150 DPI,而专业打印通常需要 300 DPI 或更高。
图像重新压缩
降采样后,您可以通过使用更高效的编解码器重新压缩图像来进一步减小大小。不同的图像类型受益于不同的压缩算法。
| 格式 | 类型 | 最适合 | 质量说明 | 典型压缩比 |
|---|---|---|---|---|
| JPEG | 有损 | 照片、扫描文档 | 质量 75-85 时良好 | 10:1 到 20:1 |
| JPEG2000 | 有损/无损 | 高质量照片 | 相同大小下优于 JPEG | 15:1 到 30:1 |
| JBIG2 | 有损/无损 | 黑白文本/扫描 | 比 CCITT 小 10-30 倍 | 50:1 到 100:1 |
| Flate (ZIP) | 无损 | 截图、图表 | 完美质量,中等压缩 | 2:1 到 4:1 |
| CCITT Group 4 | 无损 | 黑白传真质量扫描 | 非常适合 1 位图像 | 10:1 到 20:1 |
JPEG 仍然是彩色照片最广泛支持和最有效的格式。JPEG2000 提供更好的压缩,但在某些 PDF 阅读器中支持有限。对于黑白文档,JBIG2 非常高效,但需要专门的工具。
有损与无损压缩
理解有损和无损压缩之间的区别对于做出关于 PDF 优化的明智决策至关重要。
无损压缩
无损压缩在不丢弃任何信息的情况下减小文件大小。当您解压缩文件时,您会得到与开始时完全相同的内容,逐位相同。这对于准确性很重要的文档至关重要。
常见的无损技术包括:
- Flate/Deflate 压缩 — ZIP 算法,应用于文本流和矢量图形
- LZW 压缩 — 一种较旧的算法,效率低于 Flate,但仍在某些 PDF 中使用
- 行程编码 — 对于具有大面积纯色的图像很高效
- CCITT Group 4 — 专为黑白传真图像设计
无损压缩通常对文本和矢量内容实现 2:1 到 4:1 的压缩比。对于图像,比率在很大程度上取决于图像特征——截图压缩效果好,照片则不然。
有损压缩
有损压缩通过永久丢弃人类视觉不太容易察觉的信息来实现更高的压缩比。一旦应用,您就无法恢复原始数据。
关键是找到最佳点,在这个点上文件大小显著减小,但质量对于您的用例仍然可以接受。JPEG 质量设置为 85 通常提供出色的视觉质量,同时与未压缩相比将文件大小减少 80-90%。
快速提示:永远不要对同一图像多次应用有损压缩。每次压缩都会进一步降低质量。如果您需要重新压缩,如果可能的话,始终从原始未压缩源开始。
何时使用每种类型
在以下情况下选择无损压缩:
- 文档包含需要完美准确性的法律、医疗或财务信息
- 文本必须在任何缩放级别保持清晰可读
- PDF 将被进一步编辑或处理
- 您正在处理线条艺术、图表或带有文本的截图
在以下情况下选择有损压缩:
- 文档主要是照片或扫描图像
- 文件大小比完美的视觉保真度更重要
- 文档仅用于屏幕查看,不用于专业打印
- 您需要满足严格的文件大小限制(电子邮件附件、网络上传)
图像优化技术
由于图像通常占 PDF 文件大小的 60-90%,优化它们会产生最大的影响。以下是图像优化的系统方法。
分辨率指南
适当的分辨率完全取决于 PDF 的使用方式:
- 72-96 DPI — 网络查看、电子邮件附件、移动设备
- 150 DPI — 一般屏幕查看、演示文稿、内部文档
- 300 DPI — 专业打印、高质量输出
- 600+ DPI — 艺术品复制、医学成像、存档目的
大多数用于屏幕查看的 PDF 可以安全地使用 150 DPI,而不会有任何可察觉的质量损失。仅此一项就可以将文件大小减少 75%,与 300 DPI 图像相比。
色彩空间优化
彩色图像使用的数据明显多于灰度或黑白图像。如果您的文档不需要颜色,转换为灰度可以将图像大小减少 60-70%。
对于主要是文本偶尔有彩色元素的文档,请考虑:
- 将文本页面转换为黑白(1 位)
- 仅保留必要的页面为彩色
- 尽可能使用灰度而不是彩色
我们的 PDF 转图像工具 可以帮助您提取和分析单个页面,以确定哪些页面实际需要颜色。
JPEG 质量设置
JPEG 质量通常在 0-100 的范围内指定,尽管确切含义因实现而异。以下是实用指南:
- 90-100 — 最小压缩,非常大的文件,与原始无法区分
- 85-89 — 出色的质量,良好的压缩,推荐用于大多数用途
- 75-84 — 良好的质量,显著的压缩,适合网络和屏幕查看
- 60-74 — 可接受的质量,高压缩,可能可见轻微伪影
- 低于 60 — 质量差,明显的伪影,仅用于缩略图或预览
对于大多数商业文档和演示文稿,质量设置为 80-85 可在文件大小和视觉质量之间提供最佳平衡。
字体子集化和嵌入
字体可能对 PDF 文件大小有显著贡献,尤其是在使用多种字体或非拉丁文字时。理解字体嵌入和子集化对于优化至关重要。
字体嵌入的工作原理
创建 PDF 时,您有三个处理字体的选项:
- 嵌入完整字体 — 包含整个字体文件,确保完美渲染但增加文件大小
- 嵌入子集字体 — 仅包含文档中实际使用的字形(字符)
- 不嵌入字体 — 依赖查看器的系统字体,文件大小最小但渲染不一致
完整的字体文件包含数千个字形,涵盖多种语言和特殊字符。如果您的文档仅使用 50 个字符,子集化会删除未使用的字形。一个 2 MB 的字体在子集化后可能缩小到 30 KB。
字体子集化最佳实践
现代 PDF 创建工具默认自动子集化字体,但您应该验证这一点,尤其是在使用较旧的软件或从其他格式转换时。
关键考虑因素:
- 除非您有特定原因不这样做(例如允许表单字段文本输入),否则始终子集化字体
- CJK(中文、日文、韩文)字体特别大——子集化至关重要
- 如果多个页面使用相同的字体,子集在所有页面之间共享
- 子集化会阻止在大多数 PDF 编辑器中进行文本编辑,这对于最终文档可能是可取的
专业提示:如果您以编程方式创建 PDF,请始终在库的配置中启用字体子集化。这个单一设置可以在文本密集型文档中将文件大小减少几兆字节。
标准字体
PDF 定义了所有 PDF 阅读器必须支持的 14 种"标准字体":Times、Helvetica、Courier(每种都有常规、粗体、斜体和粗斜体)、Symbol 和 ZapfDingbats。使用这些字体完全消除了嵌入的需要。
但是,标准字体有局限性:
- 仅限于基本拉丁字符
- 不同 PDF 查看器之间的渲染略有不同
- 不支持高级排版功能
- 不适合需要特定字体的品牌文档
按使用场景推荐的设置
不同的使用场景需要不同的压缩策略。这