PDFly · 博客
如何压缩 PDF:真正能缩小文件的方法
两份 PDF,页数相同,其中一份的体积却是另一份的十倍。这几乎从来不是因为文档里文字的多少,而几乎总是取决于文档中嵌入了什么,以及文件本身的打包效率如何。下面将介绍究竟是什么决定了 PDF 的大小、PDFly 压缩 PDF 工具能做什么又不能做什么,以及在它自身无法解决的情况下的实际处理流程。
PDF 为什么会变大
PDF 是一个容器,它的大部分体积来自容器内部装载的内容,而不是容器本身:
- 图片。 以完整分辨率嵌入的照片、扫描页面、徽标和图表,是 PDF 体积臃肿最常见的原因。一张高分辨率照片的体积就可能超过五十页纯文本。
- 扫描页面。 扫描文档本质上只是一系列嵌入的页面图片——并没有单独的“文字”可言,因此文件大小几乎完全取决于图片尺寸和扫描分辨率。
- 嵌入字体。 为保证显示一致而嵌入的字体会明显增加体积,尤其是在一份文档中使用了多种字体或字重时。
- 残留的结构冗余。 经过反复编辑、合并或重新保存的 PDF,往往会积累重复对象、未使用的资源和低效的内部格式——这些都看不见,却都会增加字节数。
PDFly 压缩 PDF 工具实际做了什么
PDFly 压缩 PDF 工具 完全在浏览器中运行,执行 无损结构压缩:它会重建 PDF 的内部对象表,移除重复对象以及以往编辑留下的残余数据,并且在“中”和“高”级别下,使用压缩对象流(PDF 自 1.5 版起支持的更紧凑格式)重写该表。这不会改动图片中的任何一个像素,也不会重新编码任何字体,因此不存在质量损失。表单字段、超链接和书签都会被保留。
有必要准确说明这一点:它 并非有损压缩。有损压缩会舍弃细节以进一步缩小文件——通常是用更低的质量设置重新编码 JPEG,或缩小其像素尺寸。Acrobat 等桌面编辑器可以做到这一点,而 PDFly 的浏览器内引擎目前不支持。这会带来一个直接后果:如果 PDF 的体积主要由图片而非结构决定,那么仅靠无损压缩,效果是有限的。
低、中、高——各级别实际改变了什么
- 低: 跳过对象流重建,以最大程度兼容较旧的 PDF 阅读器。
- 中: 使用压缩对象流重建文件。这是大多数文档的推荐默认设置。
- 高: 目前采用与“中”相同的结构重建方式。该级别预留给随着引擎发展而推出的、更强的图片感知压缩——因此目前“中”和“高”通常会得到相同的结果。
为什么扫描版 PDF 几乎压不小
这是所有 PDF 压缩工具最常让人失望的地方,并非 PDFly 独有。扫描文档几乎完全由嵌入的页面图片构成——既没有臃肿的对象表,也没有重复的元数据可以精简,因为这个文件从一开始就不是因结构原因而变大的。结构压缩无法缩小它根本不会处理的图片。
如果扫描版 PDF 确实需要变小,真正的关键在于图片本身,而不是包裹图片的外壳。有两种做法真正管用:
- 一开始就用较低的分辨率扫描。 屏幕阅读用 150–200 DPI 就足够了;300 DPI 留给需要打印的文档。
- 对于已有的 PDF: 先用 提取图片导出页面图片,再用 图片压缩器压缩图片,最后用 JPG 转 PDF重新生成 PDF。如果之后还需要让文字可搜索,请对结果运行 OCR PDF。
发送前如何检查结果
结构压缩是无损的,因此无需为画质做目视检查——像素和字体都没有被改动。真正值得检查的是:
- 确认文件确实变小了。如果缩减幅度不足 1%,PDFly 会显示“Optimized”(已优化),而不是一个被四舍五入为零的误导性百分比——对于本来结构就很高效的文件,这是正常现象。
- 如果你在未先移除密码的情况下直接压缩了受密码保护的 PDF,请确认结果能正常打开——加密文件可能产生损坏的输出。如果属于这种情况,请先使用 解锁 PDF。
- 对于扫描或图片较多的文件,请先确认缩减幅度是否符合预期,再判断工具是否失效——参见上文章节。
什么时候压缩不是答案
有时文件大小其实并不是需要解决的问题。如果你是通过云盘或文档平台分享,而不是作为电子邮件附件发送,大文件往往根本不成问题。而如果文档的体积来自确有必要的高分辨率图片——例如面向印刷的设计文件——压缩就违背了初衷。凡是画质必须完整保留的文件,请保留原件,只压缩一份副本,用于真正需要轻装传输的场合。
电子邮件附件限制
大多数主流电子邮件服务商将附件上限设在约 25MB。结构压缩可以明显缩小文字内容多、经常编辑的 PDF,但无法挽救仅因图片而过大的文件——对此,上文的“提取图片 → 图片压缩器 → JPG 转 PDF”流程,或改用共享链接代替附件,会更有效。
常见问题
压缩 PDF 会降低图片质量吗?
不会。PDFly 的压缩工具会无损地重建 PDF 的内部结构,不会重新编码或降低内嵌图片的采样率,因此不会有可见的质量损失。如需对图片进行像素级压缩,请对图片本身使用图片压缩器。
为什么我的扫描版 PDF 没有明显变小?
扫描版 PDF 几乎完全由嵌入的页面图片构成。结构压缩只会重建文档的对象表,因此无法缩小占扫描文件体积绝大部分的图片。
低、中、高压缩级别有什么区别?
“低”会跳过对象流重建,以最大程度兼容较旧的 PDF 阅读器。“中”使用压缩对象流重建文件,是推荐的默认设置。“高”目前采用与“中”相同的结构重建方式,预留给随着 PDFly 引擎发展而推出的更强的图片感知压缩。
压缩时我的文件会被上传到服务器吗?
不会。PDFly 压缩 PDF 工具使用 pdf-lib 库,完全在你的浏览器中运行。你的文件会被读取、压缩并提供下载,全程不会被发送到任何地方。
可以压缩受密码保护的 PDF 吗?
请先使用“解锁 PDF”移除密码。直接压缩加密文件可能产生损坏或无法读取的结果。
Ayaz