如何压缩PDF而不损失质量
一个本该2 MB的PDF却有20 MB——这是常见问题。邮件附件被退回,上传限制拒绝文件,没人愿意等10秒才能打开一份文档。好消息是:大多数过大的PDF都有很大的压缩空间,且不会出现可见的质量损失。
为什么PDF比需要的更大
盲目压缩之前,先了解文件大的原因:
- 未优化的图像 — 从Word或Illustrator导出的PDF可能嵌入了全分辨率PNG或TIFF图像,而150 DPI的压缩JPEG在屏幕上看起来完全一样。
- 嵌入字体 — 每个字体文件可增加1–5 MB。字体子集化(只保留实际使用的字符)可以大幅减小。
- 重复对象 — 复制粘贴的元素或页面背景可能多次重复相同的资源。
- 未压缩的流 — 旧版或导出不当的PDF完全跳过对象流的压缩。
- 隐藏图层或元数据 — Illustrator和InDesign导出PDF时通常会嵌入完整的编辑数据。
知道原因,就能选对最有效的压缩方式。
方法一:从源文件重新导出
如果有原始文档(Word、Google Docs、Figma、InDesign),重新导出几乎总是最佳选项。选择"针对网页/屏幕优化"或"最小文件大小"——这些预设会自动将图像降采样到96–150 DPI并进行字体子集化。
Adobe Acrobat:文件 → 另存为 → 减小文件大小PDF。
LibreOffice:导出为PDF → 选择图像的"JPEG压缩"。
Word:文件 → 导出 → 创建PDF/XPS → 选项 → 位图压缩。
方法二:Ghostscript(命令行)
Ghostscript免费、跨平台,能产生最佳压缩比。它以目标DPI重新渲染PDF,重新压缩图像,并去除大部分元数据。
gs -sDEVICE=pdfwrite \
-dCompatibilityLevel=1.4 \
-dPDFSETTINGS=/ebook \
-dNOPAUSE -dBATCH -dQUIET \
-sOutputFile=output.pdf \
input.pdf
-dPDFSETTINGS 预设控制质量:
| 设置 | 目标DPI | 适用场景 |
|---|---|---|
/screen |
72 DPI | 邮件、网页预览 |
/ebook |
150 DPI | 屏幕阅读 |
/printer |
300 DPI | 家用打印 |
/prepress |
300 DPI + 色彩 | 专业印刷 |
/default |
不变 | 仅无损流压缩 |
大多数场景下,/ebook 是最佳平衡点——比原文件小得多,但屏幕阅读仍然清晰。
方法三:img2pdf + pngquant(适合图像密集型PDF)
如果PDF本质上是一堆扫描图像,先压缩图像,再重新组合:
# 提取页面为图像(需要poppler)
pdftoppm -r 150 input.pdf page
# 压缩图像
pngquant --quality=65-80 *.png
# 重新组合
img2pdf page-*.png -o output.pdf
这个工作流对用600 DPI TIFF保存的扫描文档特别有效。
方法四:在线工具
没有命令行工具时,浏览器压缩工具可以完成这项工作。上传PDF,选择质量级别,下载结果——无需安装软件,如果工具在客户端处理,文件不会离开你的浏览器。
关键点:工具是在浏览器中处理文件(客户端),还是发送到服务器?对于合同或医疗记录等敏感文件,客户端处理更安全。
PDF的"无损"压缩究竟是什么意思
无损压缩删除重复数据、优化流、去除不必要的元数据,不改变任何像素值。结果与原文件看起来完全相同。这种方式可以使很多PDF减小20–40%——即使需要保留完整打印质量也值得做。
有损压缩通过降采样图像(降低分辨率)并应用JPEG压缩走得更远。对于300 DPI的印前PDF,降至150 DPI屏幕质量后,图像数据约为原来的25%——以牺牲打印质量换来巨大的文件缩减。
对于只会在屏幕上阅读的文件,150 DPI有损压缩完全够用。
实际压缩效果参考
| 原始内容 | 典型缩减 |
|---|---|
| 扫描文档(600 DPI TIFF) | 缩小85–95% |
| InDesign/Illustrator导出 | 缩小60–80% |
| Word/Google Docs导出 | 缩小30–60% |
| 已优化的PDF | 缩小5–15% |
| 纯文字PDF | 缩小5–10% |
如果某工具声称能将纯文字PDF压缩80%,要保持怀疑——根本没那么多可压缩的内容。
何时不应压缩
以下情况避免压缩:
- PDF要送至专业印刷厂(他们需要300+ DPI)。
- 文件包含数字签名内容——压缩可能使签名失效。
- 归档法律或医疗文件(改用PDF/A格式)。
要点总结
- 优先从源文件重新导出;这是无损的,通常也是最有效的。
- Ghostscript的
/ebook预设是最佳的通用命令行选项。 - 仅供屏幕阅读的文件选150 DPI;需要打印则选300 DPI。
- 无损压缩(流优化)可实现20–40%的缩减,质量零损失。
- 敏感文件使用客户端工具,文件留在本地设备。