PDF 压缩工具结果不稳定,根因是 PDF 体积来自三个独立维度——压错地方等于没压。先看肥在哪,再选对策略,1-3 分钟能从 10MB 压到 1MB。
PDF 体积构成
随便拿一份 PDF,体积一般来自:
| 来源 | 占比典型值 | 触发场景 |
|---|---|---|
| 嵌入字体 | 30%-80% | 用了思源黑体 / Noto / 等中文字体 |
| 图像 | 20%-99% | 扫描件、含截图的报告、内嵌图表 |
| 对象冗余 / 旧版本流 | 5%-30% | 多次另存为、协作编辑过的 PDF |
| 文本层 + 矢量图 | < 5% | 几乎可忽略 |
判断当前 PDF 胖在哪,最简单:用 PDF 阅读器另存为后看体积变化——Adobe 的”减小文件大小”会先显示各部分占比;Mac Preview 的”压缩 PDF”是激进 JPEG 重压。
三种压缩思路
思路一:扫描件 → 降采样 + JPEG 重压
扫描件的 PDF 内部就是一张张大图。压缩流程:
- 降低分辨率:300 DPI → 150 DPI 体积降 75%(4 倍像素差),打印够用
- 彩色 → 灰度 / 黑白:纯文字扫描件转黑白,再走 CCITT G4 编码,体积可降 90%
- JPEG 重压:彩色照片质量 75-85 是甜点区,质量 50 以下开始可见块状伪影
- MRC(混合栅格内容):把文字层和图像分开——文字用 G4 编码,图像用 JPEG2000,再合成。商业工具的”杀器”
实测一份 50 页彩色合同扫描件:
| 处理 | 体积 |
|---|---|
| 原始(300 DPI 彩色无压缩) | 145 MB |
| 150 DPI 彩色 JPEG 85 | 18 MB |
| 150 DPI 灰度 JPEG 80 | 9 MB |
| 150 DPI 黑白 G4 | 1.8 MB |
| 150 DPI MRC | 1.2 MB |
纯文字扫描件直接走黑白 + G4,是最高 ROI 的一步。
思路二:嵌入字体 → 子集化
中文字体一套 4-8 MB,PDF 默认完整嵌入。子集化是只保留实际用到的字符:
完整思源黑体 Bold: 8.3 MB
子集(用到的 1200 字): 0.18 MB
子集化几乎无损——除非有人后续编辑这份 PDF 添加新字符(这种情况下新字符会找不到字形)。
操作上:
- Word / WPS 导出 PDF 时勾选”嵌入字体子集”,体积差距立竿见影
- 已经导出的 PDF 用 Acrobat 的”PDF 优化”或 Ghostscript 重新转译
# Ghostscript 强制子集化
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.6 \
-dSubsetFonts=true -dEmbedAllFonts=true \
-sOutputFile=out.pdf in.pdf
子集化对矢量类 PDF(Word / LaTeX / Markdown 导出)效果最显著,能把体积砍 70%-90%。
思路三:流压缩 + 对象去重
PDF 是对象数据库,多次保存后会有大量”被覆盖但仍残留”的旧对象。Linearize 一次能彻底清理:
qpdf --linearize --object-streams=generate in.pdf out.pdf
--linearize 重排对象,--object-streams=generate 把多个小对象合并成压缩流。对协作编辑过的 PDF 体积常降 20%-40%,对干净导出的影响很小。
三档质量怎么选
本工具的三档质量大致对应:
| 档位 | DPI | JPEG quality | 用途 |
|---|---|---|---|
| 高质量 | 200 | 85 | 打印、归档、文档分发 |
| 标准 | 150 | 75 | 邮件附件、网盘分享 |
| 极致压缩 | 96 | 60 | 快速预览、提交 OA 系统 |
选档原则:
- 要打印 → 高质量。低于 200 DPI 打印有明显锯齿
- 要给人看 / 邮件附件 → 标准。150 DPI 在屏幕上和 300 DPI 差异极小
- OA 系统限制 1-2 MB → 极致。先试一档不够再加力
各类型典型瘦身路径
| PDF 来源 | 主要肥点 | 推荐策略 |
|---|---|---|
| Word / WPS 导出 | 嵌入字体 | 字体子集化 + 流压缩 |
| LaTeX / Markdown 导出 | 字体 | 字体子集化(通常自动) |
| Photoshop / Illustrator 导出 | 嵌入图像 | 降采样 + JPEG 重压 |
| 扫描仪输出(彩色文字) | 图像 | 灰度 + 200 DPI |
| 扫描仪输出(纯黑白文字) | 图像 | 黑白 G4 |
| 网页打印(Chrome 另存 PDF) | 嵌入字体 + 图像 | 子集化 + JPEG 重压 |
| 多人协作过的版本 | 旧对象残留 | 流压缩 + linearize |
不要做的事
- 不要把矢量 PDF 变图像 PDF 压缩:失去文字层就不能搜索 / 复制 / OCR
- 不要质量 < 50 的 JPEG:眼睛看得出块状伪影,文字边缘出现糊点
- 不要 96 DPI 以下:A4 200×280mm 在 96 DPI 下是 800×1100 像素,再低连屏幕显示都糊
- 不要相信”无损 90% 压缩”广告:物理上不可能。无损压缩对常规 PDF 极限是 30%-50%
- 不要重复压缩同一份 PDF:JPEG 重压每次都损失质量,第三次后可见伪影
一句话总结
PDF 胖在哪决定怎么压:扫描件降 DPI、矢量文档子集化字体、协作版本走流压缩;混着压不如先看一眼。