发布于 · 阅读约 1 分钟
如何在不损失质量的前提下压缩 PDF
一份实用、不绕弯子的 PDF 瘦身指南:到底是什么占了体积,哪些「压缩档位」真正起作用,以及如何让文字依然清晰、签名依然合法。
你点了「发送」,邮件被退回,原因永远那一个:PDF 太大。附件上限 25 MB,你的文件 38 MB,而你离开会还有十分钟。熟悉吗?几乎每一个常和 PDF 打交道的人都经历过这一幕,几乎每个人都会顺手点开搜索结果里第一个「在线压缩 PDF」的链接,祈祷它别把重要内容毁掉,然后发出去。
本文是这件事的长答案版本。它会解释:是什么真正让 PDF 体积变大,工具里那些「压缩等级」背后到底在做什么,以及在哪些情况下使用它们是安全的。读完之后,你应该能看到一个 PDF,就大致猜出它能瘦多少,并选出正确的处理思路,而不是凭运气。
为什么 PDF 一开始就这么大
PDF 本质上是一个容器。里面可以装文本流、矢量图形、内嵌字体、栅格图像、表单字段、注释、JavaScript、附件文件和元数据。当人们抱怨 PDF 体积巨大时,罪魁祸首几乎从不是文字。纯文本小到惊人:一整本小说编码下来也只有几百 KB。臃肿主要来自三个地方。
第一是内嵌的栅格图像,尤其是扫描件。一页 300 DPI 的彩色扫描差不多 2500 万像素,未压缩约 75 MB;即便用合理的 JPEG 压缩,每页仍可能 2–4 MB。一份 30 页的文档很容易就 100 MB 起步。第二是内嵌字体。一款覆盖完整 Unicode 的现代 OpenType 字体本身就有 1–3 MB;用了六个字体家族的演示文档很快就会膨胀。第三是冗余或未清理的对象:修订历史、删除但没真正清掉的图片、每页都重复嵌入的同一个 logo。
弄清是哪一类占了大头,是最有用的诊断步骤。扫描型 PDF 和幻灯片导出 PDF 不是同一种问题,也不该用同一种方法去修。
真正的四种压缩手段
当某个 PDF 压缩工具宣传「智能压缩」或「AI 驱动的瘦身」时,它几乎总是在以下四种众所周知的操作里挑几样组合使用。理解它们,你就能预测结果,而不是猜。
- 图像下采样。降低内嵌图像的像素尺寸。300 DPI 扫描重采样到 150 DPI,像素总数减少到原来的 1/4,体积通常也接近 1/4。严格意义上是有损的(像素回不来),但屏幕上往往看不出区别。
- 图像重新编码。换编码或换质量参数:未压缩位图改成 JPEG,或把 JPEG 质量从 95 降到 75。收益很大,质量损失从「无感」到「明显」都可能,取决于你压得多猛。
- 字体子集化与去重。只内嵌文档实际用到的字形,并合并重复字体。无损。一个内嵌三套完整字体的文档,可能在不改一个像素的前提下省下好几 MB。
- 对象流压缩与清理。移除孤立对象,用 Flate(zlib)压缩内部流,合并相同资源。完全无损,几乎没有风险。
无损 vs 有损:按文档用途选工具
压缩要么是无损(每一节省的字节都可恢复,肉眼输出与原文档逐位一致),要么是有损(拿一些保真换体积)。诀窍在于让方法匹配文档的用途。
签字合同、法院文件、公证后的 PDF/A 归档、含数学公式的学术论文:只能无损。签名扫描被模糊化,或公式被重新 JPEG 化,可能改变文档的法律或科学含义。营销手册、内部会议幻灯、菜谱合集:有损完全可以接受,往往也是达到目标体积的唯一方式。
如果你拿不准一份文档是不是「永远不要碰像素」类的,默认走无损。省得少一些,但不会出事。
现实中的数字大概是这样
下面是基于常见办公文档的粗略参考,仅作方向参考,不要当承诺。
文档类型 原始大小 无损后 中等有损后
--------------------------------------------------------------
纯文本报告 10 MB 8 MB 7 MB
文本 + 5 张照片 18 MB 15 MB 4 MB
幻灯片(PNG 多) 40 MB 32 MB 6 MB
30 页扫描 PDF 50 MB 48 MB 5 MB
带封面的电子书 12 MB 10 MB 3 MB为什么纯文本 PDF 几乎压不下去
如果你的文件以文字为主,压缩之后几乎没变化,那不是你姿势不对。PDF 默认就用 Flate 压缩内容流,已经没多少水分可挤。对纯文本文档,真正能省的只有字体子集化、去掉无用元数据,以及清掉被遗忘的内嵌附件。合理预期:缩小 15%–25%,到此为止。任何承诺把纯文本 PDF 压到 90% 缩减的人,要么是把它重新栅格化(把清晰文字变成模糊图片),要么是在骗你。
明白这一点能改变你的反应。如果一份 10 MB 的法律意见书怎么压都到不了 8 MB 以下,那就是底线。把它拆成两份 PDF,比为了凑数字而把文字压糊,要诚实得多。
为什么扫描类 PDF 能瘦得很猛
反过来:一份 50 MB 的扫描文档常常可以压到 5 MB,屏幕阅读时看不出质量损失。为什么?因为多数扫描仪默认 300 DPI 彩色,对屏幕上看的文档来说严重过剩。150 DPI 对屏幕正文已经绰绰有余,中等 JPEG 质量在常规缩放下根本看不出来。你不是在毁信息,而是在去掉眼睛永远不会用到的信息。
如果文档要打印,就守住 200–300 DPI。如果是要发邮件、在笔记本上看的,灰度 150 DPI 通常是甜区。如果里面有细小手写或精细工程线条,先在一页上试一下再批量处理。
千万不要做的事
- 不要对同一个 PDF 用有损设置反复压缩两次。每过一遍就重新编码一次 JPEG,伪影会叠加。三轮之后,你的扫描看上去就像 1994 年传真出来的。
- 不要对签字法律文件、合同或任何要交法院的文件做有损压缩。哪怕是细微的像素改动也可能影响其证据价值,签名肉眼可见的劣化看上去也很可疑。
- 不要先 OCR 再有损压缩、再次 OCR。在已经劣化的图像上跑第二遍 OCR,文字结果会更差,而且原件也丢了。
- 不要把敏感 PDF(病历、保密协议、报税单)随便上传到不知名的网页压缩工具。许多服务会把你的文件留在它们的服务器上,有些甚至明文授予自己使用权。读条款,或者用本地浏览器里跑的工具。
- 不要把「越小越好」当作信条。一份 200 KB 但因为 OCR 文字被丢了而无法搜索的 PDF,比一份 5 MB 但能正确搜索的 PDF 更糟。
一棵简单的决策树
拿到一份要瘦身的 PDF,按顺序问下面这几个问题。九成情况下三十秒内就能选好。
- 文档是否具有法律敏感性(已签字、公证、官方备案)?只走无损。到此为止。
- 文档是不是大部分文字、没有大图?跑无损清理;预期省 15%–25%;不够就考虑拆分。
- 文档是否以扫描或照片为主、用于屏幕阅读?下采样到 150 DPI 并以中等 JPEG 质量重新编码。预期省 60%–90%。
- 文档是含 PNG 截图的幻灯片或营销 PDF?把照片性质的 PNG 转成 JPEG,含锐利文字或线条的保留 PNG。
- 文档要去印刷?图像至少保持 200–300 DPI,仅做无损清理。
浏览器端压缩相比之下如何
大多数在线 PDF 压缩工具会上传你的文件,在服务器上处理,再把更小的版本传回。可行,但有两个代价:你的文档离开了你的设备,每次改动都要走一次网络往返。基于浏览器的工具(包括 Multilities 的 /tools/pdf-compress)使用 WebAssembly 在本地完成处理。什么都不上传,小文件几乎瞬间出结果,你甚至能在火车上压一整堆收据而不消耗移动流量。
浏览器压缩也有取舍:超大 PDF(数百 MB)可能挤爆手机内存,最重的重编码流水线比一台壮实的服务器略慢。但对覆盖了大多数现实文档的 5–50 MB 区间,把上传时间算进去,本地方案在端到端总耗时上更快,而且数据从未离开设备。
几招以小博大的具体技巧
下面这些是几乎对所有 PDF 都立竿见影的高杠杆调整。
- 去掉内嵌缩略图。某些 PDF 生成器会为每页烤入一张缩略图,长文档下累积很可观,几乎没有现代阅读器需要它。
- 移除未使用的表单字段和 JavaScript。老的表单模板常常带着没人填过的字段定义和无效脚本。
- 扁平化注释和批注。如果不再需要继续编辑它们,扁平化会把它们并入页面,清理流程随后就能去掉底层对象。
- 颜色不传递信息时,把彩色扫描转成灰度。同 DPI 下,灰度扫描体积大约只有彩色的三分之一。
- 从源文件重新导出。如果原文件是 Word 或 Keynote,用「最小体积」或「降低质量」的选项重新导出,往往比对一个已经臃肿的 PDF 做任何处理都强。
好压缩工具的「档位」其实是什么意思
多数工具会暴露三到四档:低、中、高、极致,或者更友好的名字如「打印质量」「屏幕质量」「适合邮件」。对照前面那四种技术,它们大致映射如下。「低」或「打印」只跑无损清理,图像保持 300 DPI;「中」或「屏幕」下采样到约 150 DPI,并以质量 80 重新编码 JPEG;「高」或「邮件」下推到 96–120 DPI、JPEG 质量 60;「极致」可能掉到 72 DPI、质量 40,扫描中的文字会开始发糊。
如果你被这些标签绕晕,先用最高档跑一页样张,仔细看一眼。试样没问题,通常就可以放心用相同的设置处理全文档。
把它们串起来
把 PDF 压好,绝大部分功夫在于让方法匹配文档。签字合同走无损清理,50 MB 扫描报告做激进下采样,文字密集的学术论文就接受现状,因为没什么可挤的了。最好用的工具,是那些让你自己挑档位、并诚实告诉你它做了什么的工具。
下次你的邮件被退回时,花十秒钟问问自己:我手上是哪种 PDF?然后一次性选对设置,而不是把同一份文件喂进五个不同的压缩器,最后留下一份模糊带水印、本来一遍仔细处理就没问题的版本。如果你想要一个不上传、跑在浏览器里、并在你点确认前先告诉你前后体积对比的方案,Multilities 的 PDF 压缩工具就是围绕这一流程构建的。无论用什么工具,思路都是一致的:弄清楚是什么把文件撑大,挑能解决问题的最轻量的工具,活儿干完就停手。