PDF 转图片:DPI、质量和实用技巧
PDF 转图片,最重要的一个数字就是 DPI。太低文字看不清,太高文件大得没意义。合适的 DPI 完全取决于输出去向——屏幕、印刷、OCR,还是归档。其他所有事情,包括格式和色彩模式,都由这个决定衍生出来。
把 PDF 转出一张干净的图片,几乎永远是一场关于 DPI 纪律的比赛。想清楚图片将被用在哪里,把它映射到一个 DPI 目标,选一个能处理这类内容的格式(文字多的用 PNG,照片多的用 JPEG),并在输出之前解决色彩配置文件不匹配的问题。工具是次要的;只要设置对了,poppler-utils 和 ImageMagick 都能胜任。
为什么 DPI 是核心决定
一个 PDF 页面里装的是分辨率无关的对象:矢量文字、矢量路径和嵌入的光栅图像。转换成光栅图像格式时,渲染器必须决定每英寸页面生成多少像素。这个决定就是 DPI(每英寸点数),它决定了其他一切。
在 72 DPI 下,一张 A4 页面(8.27 × 11.69 英寸)渲染出 595 × 842 像素。在 300 DPI 下,同一页渲染出 2480 × 3508 像素——像素数超过 17 倍,压缩前文件体积也大约是 17 倍,文字明显更清晰。在 600 DPI 下你会得到 4960 × 7016 像素——是 72 DPI 像素数的 70 倍。
合适的 DPI 不是最高的 DPI。OCR 软件在 300 到 400 DPI 之间效果最佳;再高准确率通常不会提升,处理时间却会增加。屏幕显示很少能从 150 DPI 以上获益,因为 CSS 独立处理显示密度。印刷复制在预期印刷尺寸下正好需要 300 DPI,多了没用。
在 PNG、JPEG 和 WebP 之间选择
PNG 是文字、表格、线稿、矢量示意图为主的页面的正确选择。它的无损压缩让字符保持锐利,也不会像 JPEG 那样在高对比边缘出现伪影。代价是同样内容下比 JPEG 大。
JPEG 适合以照片或复杂连续色调图像为主的页面。它的有损压缩在平滑渐变里藏得很好,也不会在文字周围产生让 JPEG 截图不可读的那种块状振铃——但这只是因为这类页面本身没什么文字给它振铃。
WebP 无损模式可以在多数 PDF 转图片管线里取代 PNG,文件更小。WebP 有损模式在质量 85 及以上时,对以照片为主的页面是可行的 JPEG 替代。限制在于工具链:并非所有下游工具都接受 WebP,请在投入使用前先验证。
用 poppler-utils 转换 PDF 页面
- 安装 poppler-utils
Debian/Ubuntu:`apt install poppler-utils`。macOS 用 Homebrew:`brew install poppler`。Windows 上可以从 poppler Windows releases 页面获取预编译二进制。
- 把所有页面以 300 DPI 转成 PNG
命令 `pdftoppm -r 300 -png input.pdf output/page` 会渲染每一页,写出 `output/page-1.png`、`output/page-2.png` 等等。`-r` 标志设置 DPI。
- 只转某个页码范围
加 `-f 3 -l 7` 只渲染第 3 到第 7 页:`pdftoppm -r 300 -png -f 3 -l 7 input.pdf output/page`。只需要一部分时这比整份渲染快得多。
- 照片为主的 PDF 用 JPEG
把 `-png` 换成 `-jpeg -jpegopt quality=85` 就是 JPEG 输出。`jpegopt` 参数支持 quality、progressive 和 optimize 标志。对照片密集的年度报告或宣传册,JPEG 85 相比 PNG 能把输出体积砍半。
单页 A4 在不同 DPI 下的输出体积
| DPI | 像素尺寸 | PNG 体积(约) | JPEG 85 体积(约) |
|---|---|---|---|
| 72 | 595 × 842 | 约 120 KB | 约 40 KB |
| 96 | 794 × 1123 | 约 200 KB | 约 70 KB |
| 150 | 1240 × 1754 | 约 450 KB | 约 150 KB |
| 300 | 2480 × 3508 | 约 1.5 MB | 约 500 KB |
| 600 | 4960 × 7016 | 约 5.5 MB | 约 1.8 MB |
色彩模式与 ICC 配置文件处理
PDF 文件里可能嵌入了为印刷准备的 CMYK 色彩空间。绝大多数图像查看器和浏览器工作在 sRGB 下,所以一个不做色彩转换就渲染的 CMYK PDF,会得到色彩偏移、发灰的图像。转换印刷用 PDF 时,请显式要求 sRGB 输出配置文件。
用 pdftoppm 时加 `-srgb` 强制以 sRGB 输出,无论嵌入的色彩空间是什么。用 ImageMagick 时在输出路径前加 `-colorspace sRGB`。如果转换是为了印刷复制,则请保留 CMYK 配置文件,并确认目标印刷厂能接受 CMYK 图像。
灰度 PDF——扫描文档、法律文件——可以用 `-gray`(pdftoppm)或 `-colorspace Gray`(ImageMagick)渲染成灰度图像。同 DPI 下,灰度文件体积约为 RGB 的三分之一。
批量 PDF 转图片的小技巧
- 批量处理请用 pdftoppm——它处理 PDF 比 ImageMagick 快,因为不走 Ghostscript。
- 很大的 PDF 先用 `pdfseparate` 拆成小块再转换,方便并行处理。
- 输出文件名用零填充的页码(`page-%04d.png`),文件系统里排序才不会乱。
- 跑全量批处理前,先用选定 DPI 检查一页样张——1000 页文档上的 300 DPI 错误会浪费大量时间。
- 面向长期存储的归档扫描件,用 LZW 压缩的 TIFF 更能保留元数据,也比 PNG 或 JPEG 更被归档界接受。
常见问题
- 把 PDF 转成图片应该用多少 DPI?
- 看用途:屏幕显示 150 DPI,印刷或 OCR 用 300 DPI,归档保存 400–600 DPI。屏幕用途超过 300 DPI 既浪费存储,也不会改善可读性。
- 为什么 PDF 转成图片后看起来发糊?
- DPI 设置太低。常见错误是沿用默认的 72 DPI。要让文字清晰,屏幕用途至少 150 DPI,印刷和 OCR 用 300 DPI。
- 转换 PDF 时该用 PNG 还是 JPEG?
- 文字多的页面用 PNG,以照片为主的页面用 JPEG。PNG 让文字保持锐利、无伪影;JPEG 能高效处理平滑照片内容,但会糊掉细小文字。
- 怎么只转 PDF 里的特定几页?
- 用 pdftoppm 的 `-f` 和 `-l` 指定起止页:`pdftoppm -r 300 -png -f 2 -l 5 input.pdf output/page`。只需要部分页面时,这比整份转换快得多。
- 为什么 PDF 转图片后颜色不对?
- 这份 PDF 可能用了为印刷准备的 CMYK 色彩空间,而转换器没有做配置文件转换就输出到 sRGB。加 `-srgb`(pdftoppm)或 `-colorspace sRGB`(ImageMagick)就能修正色彩映射。