PDF 转图片

PDF 文件为何变大

一份大到发不出邮件的 PDF 是日常烦恼,通常的做法是扔进压缩工具然后祈祷。有时管用,有时毫无效果——因为 PDF 变大有四种性质迥异的原因,各自需要不同的补救办法。

真正占空间的是什么

PDF 是一组对象的集合:页面描述、字体、图片以及各类元数据。文字和矢量图形极小,一页散文不过几 KB 的指令。因此,一份大得离谱的文件,问题不在文字上,把文字压得更狠也无济于事。

实际当中,体积几乎总是来自四者之一:嵌入的位图、嵌入的字体、保留的修订历史,或是累积的元数据与附件。它们各自所占比例,取决于文件是怎么产生的。

压缩之前值得先猜一猜。用文件大小除以页数:每页不到 100 KB 属于精简;0.5 MB 左右提示有图片;每页好几 MB 则意味着整页扫描或高分辨率照片。

嵌入图片——通常的元凶

几乎所有大体积 PDF 都由位图主导。从相机粘贴进来的照片往往有几千像素宽,即使显示出来只有两厘米宽,它依然保留着每一个像素。文件保存的是原图,而不是你看到的样子。

扫描文档是极端情形,因为每一页都是整页图像。300 DPI 的彩色扫描每页约 870 万像素,压缩后通常也有 1 到 3 MB,并且页与页之间无法共享任何内容,这份开销要乘以全部张数。

这里真正有效的是降采样,也是通用压缩工具唯一擅长的事。把图片降到实际所需的分辨率——屏幕阅读 150 DPI、印刷 300 DPI——常常能让扫描文件缩小四分之三,而屏幕上看不出差别。

字体

PDF 会嵌入所用字体,以保证到哪里看都一模一样,而这种嵌入是有代价的。单个拉丁字体子集通常只有几十 KB,可以忽略;CJK 字体则是另一回事:中日文字体包含数千字形,单个就可能达到数 MB。

标准的缓解手段是子集化。不嵌入整套字体,只收入文档实际用到的字形——一份简短的中文文档可能只需几百字而非两万字。现代导出工具大多默认子集化,但部分老旧工具和某些面向印刷的预设并不会。

字体问题的症状是:一份小文档重得莫名其妙,比如两页信函、毫无图片却有 4 MB。在动用无从下手的图片压缩之前,先查看会列出嵌入字体的文档属性。

历史、元数据与附件

PDF 支持增量保存:编辑器可以把改动追加到文件末尾,而不是重写整个文件。这让保存变快并保留了修改痕迹,但也意味着删掉的内容可能仍留在文件中,反复编辑过的文档可能是其可见内容的好几倍大。

这不仅是体积问题,也是隐私问题。发送前自以为删掉的文字,可能仍能从同一文件内较早的修订中还原出来。在内容上画个黑方块根本不算涂黑——被遮住的文字依然留在文档里。

执行一次干净保存(有时称为“优化保存”或“线性化”)会从头重写文件,丢弃累积的历史。表单字段、批注、嵌入附件和色彩配置文件同样增加体积,若接收方不需要,都可以舍弃。

转换成图片什么时候有用,什么时候没用

把页面渲染成图片再打包,有时比原文件小,有时大得多,值得事先知道该预期哪一种。对文字版 PDF 来说,输出几乎必然更大,因为紧凑的字符指令被换成了数百万像素。

对高分辨率的扫描版 PDF,它确实能瘦身——前提是渲染分辨率低于扫描件自身。600 DPI 的扫描件以 2x(约 144 DPI)导出,数据量只剩一小部分;当这些页面只需在屏幕上阅读时,这是划算的取舍。

但要注意,转换成图片在减掉体积的同时也丢掉了文字层。结果无法搜索、无法复制,屏幕阅读器也读不了。分享页面的视觉快照时这是正确选择;归档一份别人日后还要处理的文档时则是错误选择。

送印前的 PDF 检查


首页 · 使用指南 · 常见问题