PDF 转图片:DPI 与页面尺寸的换算、矢量页和扫描页的差别

· 约 6 分钟 🖨️ PDF 转图片

PDF 转图看起来是个简单格式转换,但用户最常问的”1×/2×/3× 选哪个""怎么不糊""字体乱码”,根源都在没区分 PDF 内容是矢量还是扫描——这两类的渲染逻辑完全不同。

矢量 PDF vs 扫描 PDF:根本区别

矢量 PDF(Word / WPS / LaTeX 导出)
  内容:文字、矢量图形、矢量图表
  存储:数学描述("在坐标 (100, 200) 用思源黑体 14pt 画'你好'")
  缩放:无限放大不糊
  转图:DPI 越高输出越清晰
  文件大:通常很小(几百 KB / 100 页)

扫描 PDF(拍照 / 扫描仪生成)
  内容:本质是一张张图片包装在 PDF 里
  存储:像素数据(JPEG/JBIG2 编码的位图)
  缩放:放大就糊
  转图:DPI 高于原扫描 DPI 没用
  文件大:单页几百 KB 到几 MB

判断方法

  1. PDF 阅读器放大 400% —— 矢量清晰、扫描糊
  2. 鼠标能选中文字 —— 矢量可以、扫描不行(除非 OCR 过)
  3. 体积比例 —— 矢量小、扫描大

DPI 倍率的真实含义

工具上的 1× / 2× / 3× 选项:

选项DPI输出 A4 像素用途
72595 × 842屏幕预览
1441190 × 1684高清屏(Retina)
2161785 × 2526网页发布、社交媒体
2882380 × 3368接近 300 DPI 印刷
300 DPI3002480 × 3508标准印刷
600 DPI6004960 × 7016高质量印刷 / 归档

关键认知

  • 倍率 = 缩放系数,不是”清晰度等级”
  • 矢量 PDF:3× 比 1× 真的更清晰(文字边缘更细腻)
  • 扫描 PDF:3× 比 1× 只是更大,不更清晰——原扫描 200 DPI,再转成 600 DPI 的图只是把每个像素放大成 9 个相同的像素

判断需要的 DPI

打印场景:目标尺寸(英寸) × 300 DPI = 需要的像素
  例:要打印 6×8 英寸 → 1800 × 2400 像素
  
屏幕场景:目标显示尺寸(CSS 像素) × 设备像素比
  例:要显示 600px 宽 → 600px (普通屏) 或 1800px (3x Retina)
  
社交媒体:1080-2160 长边像素够用

主流转换工具对比

工具平台速度矢量质量扫描质量字体处理备注
pdftoppm(poppler)跨平台 CLI系统字体最常用,开源
mutool(MuPDF)跨平台 CLI快(2-5×)系统字体性能最好
ImageMagick convert跨平台 CLI中(依赖 ghostscript)通过 gs灵活但慢
Adobe Acrobat桌面付费自带字体库字体替代最准
macOS PreviewMac 内置系统字体简单场景够用
PyPDF2 / pdf2imagePython优(依赖 poppler)系统字体脚本场景
pdf.js浏览器 JSWeb 字体隐私好(本地处理)

命令行示例

# pdftoppm - 转 PNG 200 DPI
pdftoppm -png -r 200 input.pdf output_prefix
# 输出:output_prefix-1.png, output_prefix-2.png, ...

# pdftoppm - 只转第 5-10 页 + 高质量 JPG
pdftoppm -jpeg -jpegopt quality=90 -r 300 -f 5 -l 10 input.pdf out
# 输出:out-005.jpg ... out-010.jpg

# mutool - 高速渲染
mutool draw -o page-%03d.png -r 200 input.pdf

# ImageMagick - 灵活但慢
convert -density 200 -quality 90 input.pdf output-%03d.jpg

文件命名:避免 page-10 跑到 page-2 前面

字母序排序的陷阱

未补零:
  page-1.png
  page-10.png    ← 10 跑到 2 前
  page-11.png
  page-2.png
  page-3.png

补零:
  page-001.png
  page-002.png
  page-003.png
  ...
  page-010.png   ✓ 顺序正确
  page-011.png

位数选择

  • < 100 页 → 3 位(001-099)
  • < 1000 页 → 4 位(0001-0999)
  • 不确定 → 都用 4 位

工具默认补零行为

工具默认调整方法
pdftoppm自动补零(按总页数)无需设置
mutool%d 不补零%03d 显式补零
ImageMagick%d 不补零%03d
Adobe Acrobat补零”另存为图像” 时设置

字体问题:豆腐块、乱码

症状:转出的图里某些字(特别是中文)显示成 □□□ 或被替换成奇怪字体。

原因

PDF 创建时

作者用了字体 X

导出 PDF 时
  ├─ 嵌入字体 X → 任何环境都正确显示
  └─ 不嵌入字体 X → 依赖渲染环境有 X

                     无 X → 替代字体渲染(可能错位 / 缺字)

最常见场景

  • Word 文档用了”宋体”导出 PDF 没嵌入
  • 在 Windows 转图正常(系统有宋体)
  • 在 Linux 服务器转图变豆腐(无宋体)
  • 在 Mac 转图变成”宋体-简”(系统替代品,可能不完全一致)

修复

方案难度效果
创建 PDF 时勾”嵌入字体”根本解决
转换环境装中文字体Linux: apt install fonts-noto-cjk
用 Adobe Acrobat 转换自带字体库
把 PDF 在 Word 重新打开再导出可能丢格式
用浏览器打印 PDF 为新 PDF浏览器会嵌入字体

预防:交付 PDF 给第三方前用 Acrobat 检查”属性 → 字体”——所有字体都应该标”已嵌入”或”已嵌入子集”。

色彩配置:CMYK / Adobe RGB 转 sRGB

症状:转出图颜色偏淡 / 偏色 / 与原 PDF 不一致。

根因

  • 印刷 PDF 通常 CMYK 色彩空间
  • 屏幕显示是 sRGB
  • 转换时需要色彩空间映射

对照

源色彩空间转 sRGB 后视觉影响
CMYK多数色相能保留黑色可能偏灰
Adobe RGB鲜艳色被压缩蓝绿色饱和度降低
Display P3鲜艳色被压缩鲜红 / 翠绿明显变淡
sRGB一致无影响

专业流程:转换工具显式指定 ICC profile,保证色彩管理正确。

家用流程:默认 sRGB 输出即可——日常文档对色彩准确性要求不高。

OCR:从图回到文字

何时需要

  • 扫描件 PDF 想编辑 / 复制文字
  • 转图后想索引 / 搜索内容
  • 老资料数字化

何时不需要

  • 矢量 PDF 直接 pdftotext file.pdf 提取文字——100% 准确,不要先转图再 OCR
  • 已经能选中文字的 PDF 直接复制

OCR 工具链对比(中英文场景):

工具准确率速度成本备注
Tesseract 5免费开源,配中英文模型
PaddleOCR高(中文)免费百度,中文场景最好的开源
Google Cloud Vision0.0015/页商业,API 简单
Azure Computer Vision类似微软
Adobe Acrobat OCR付费桌面集成好
ABBYY FineReader极高付费贵专业归档场景

OCR 准确率优化

  1. 输入图 DPI 至少 200,推荐 300
  2. 转灰度 + 二值化(去黄底)
  3. deskew 矫正倾斜(多数 OCR 工具自带)
  4. 选对应语言模型(中文必须 chi_sim,不要默认 eng)
  5. 后处理用拼写检查 / 词典校正常见错字

实战决策树

我有一个 PDF 要转图,怎么办?
├─ 先判断:矢量 还是 扫描?
│  ├─ 鼠标能选文字 → 矢量
│  ├─ 放大 400% 不糊 → 矢量
│  └─ 否则 → 扫描

├─ 用途是?
│  ├─ 屏幕预览 → 1× (72 DPI)
│  ├─ 网页发布 → 2× (144 DPI)
│  ├─ 印刷 / 高清打印 → 3× 或 300 DPI
│  └─ 长期归档 → 600 DPI

├─ 输出格式?
│  ├─ 文字 / UI / 图表为主 → PNG
│  ├─ 照片 / 扫描件 → JPG (质量 85-90%)
│  └─ 透明背景 / 二次编辑 → PNG

├─ 工具选择?
│  ├─ 单次少量 → 在线工具 / Acrobat
│  ├─ 大批量 → mutool / pdftoppm 命令行
│  └─ 嵌入业务流程 → pdf2image (Python) / pdf.js (浏览器)

└─ 字体可能有问题?
   ├─ Acrobat 检查字体嵌入状态
   └─ 转换环境装齐字体(Linux 装 fonts-noto-cjk)

常见问题速答

Q:转出来的图带白边 / 多了一圈空白? A:PDF 页面 = 内容区 + 页边距。如果原 PDF 有大白边(A4 上下空 2cm),转图会保留。需要去白边:用 ImageMagick -trim 或专门的 crop 工具。

Q:能不能只导出 PDF 里的图片,不要文字 / 背景? A:用 pdfimages -all input.pdf out_prefix 提取所有嵌入的图——这是图片资源,不是渲染图。区别:渲染图 = 看到的样子;提取图 = PDF 内嵌的原始图片资源(不含渲染叠加的文字)。

Q:转图后想再合并回 PDF? A:那是循环操作。如果只是想”修改 PDF 内容”,建议直接在 PDF 里编辑(Adobe Acrobat / Foxit),或转 Word 再编辑——转图再合并会丢失矢量性变成扫描件 PDF。

Q:PDF 加密能转图吗? A:要密码。先用 PDF 解密工具去除密码(合法使用前提),再转图。pdftoppm 的 -upw / -opw 选项可以传密码。

PDF 转图的核心是先理解你的 PDF 是什么——矢量还是扫描、是否含敏感字体、目标输出尺寸是多少。参数选择都是这些前提的下游。

❓ 常见问题

PDF 转图片选 1×/2×/3× 是什么意思?数字越大越清晰吗?

严格说不是"越清晰",是"输出图片越大"。倍率本质是 DPI 倍数:1× = 72 DPI(屏幕原尺寸)、2× = 144 DPI(高清屏)、3× = 216 DPI(接近印刷质量)。对矢量 PDF——文字、图表、设计稿——倍率越大输出像素越多、越清晰,因为矢量是数学公式描述的形状,可以无限渲染;对扫描 PDF——拍照 / 扫描得到的 PDF——倍率超过原始扫描 DPI 后只是把每个像素放大重复,不会变清晰,反而显示放大锯齿。实务建议:(1) 屏幕预览 → 1×;(2) 二次编辑 / 网页发布 → 2×;(3) 印刷 / 高清打印 → 3× 或更高(300 DPI 起);(4) 扫描件转图无意义超过原始扫描 DPI——先看 PDF 是矢量还是扫描再决定。

怎么判断我的 PDF 是矢量的还是扫描的?

有几个简单办法。(1) PDF 阅读器放大试试——矢量 PDF 放大 400% 文字仍然边缘锐利、清晰;扫描 PDF 放大 200% 就开始糊、出现锯齿;(2) 能不能选中文字——矢量 PDF 文字可以鼠标选中复制;扫描 PDF 文字是图像,选不中(除非已经过 OCR);(3) 文件大小——同样页数下,矢量 PDF 几百 KB 到 1MB;扫描 PDF 单页 100KB-2MB;(4) 创建工具——Word / WPS / LaTeX 导出的几乎一定是矢量;扫描仪 / 手机扫描 App 输出的是扫描件;混合 PDF 也常见(封面是扫描照片,正文是矢量文字)。用 pdfinfo 命令pdfinfo -box file.pdf 看 page size 和 producer 字段,能初步判断来源。

PDF 转图后选 PNG 还是 JPG?

看页面内容PNG 适合:(1) 矢量 PDF(文字、图表、UI 设计)—— PNG 无损保留锐边,文字清晰;(2) 含透明 / 半透明效果;(3) 截图 / 屏幕用,二次编辑不损失质量;(4) 颜色少(图标、流程图)—— PNG 调色板压缩比 JPG 小。JPG 适合:(1) 扫描照片、护照、合同(含照片)—— JPG 对自然图像压缩效率高;(2) 体积优先(PNG 通常 2-5 倍于 JPG);(3) 不需要透明背景。陷阱:(1) JPG 转换文字会出现"压缩噪点"——文字边缘模糊、出现彩色像素;(2) PNG 转扫描照片体积巨大——一张扫描合同 PNG 5MB,JPG 只要 500KB;(3) 多页 PDF 批量转图最好按内容分类——纯文字页转 PNG、含照片页转 JPG。

PDF 转图后图片显示偏白 / 颜色不准

色彩配置(color profile / ICC)问题。原因:(1) PDF 内嵌 CMYK 色彩配置(印刷标准),转 RGB 图片时需要色彩转换;(2) 某些工具不处理 ICC,直接当 sRGB 渲染——颜色偏淡或饱和度降低;(3) PDF 含 Adobe RGB / Display P3 等广色域内容,转 sRGB 时鲜艳色被压缩。对策:(1) 选支持 ICC 的工具(pdftoppm / mutool / Adobe Acrobat 导出);(2) 转换时显式指定输出色彩空间为 sRGB;(3) 印刷场景反向——保留 CMYK 输出 TIFF;(4) 如果需要"屏幕显示与原 PDF 完全一致"——目标设备色彩配置(屏幕通常 sRGB)必须与转换输出匹配。实务:90% 场景输出 sRGB JPG / PNG 即可;专业印刷 / 设计才需要细究。

多页 PDF 转成多张图,文件名怎么命名最合理?

主流约定zero-padded 序号page-001.png, page-002.png, ..., page-100.png——按字母序就是按页码序,不会乱。位数应根据总页数决定:< 100 页用 3 位(001-099)、< 1000 页用 4 位(0001-0999)。避免的命名:(1) page-1.png, page-2.png, ..., page-10.png——字母序排序 page-10 跑到 page-2 前面;(2) 中文 第一页.png, 第二页.png——按 Unicode 排序与中文阅读顺序不一致;(3) 按时间戳——同一秒生成多文件可能冲突。含原文件名原文件名_page-001.png——一次转多个 PDF 时不会混淆。工具默认行为:pdftoppm 输出 prefix-001.png、Adobe Acrobat 输出 Page_001.png、ImageMagick 默认 0.png, 1.png, 2.png(无补零,建议加格式参数 -format png + convert ... %03d.png)。

PDF 里的文字转图后能 OCR 识别回文字吗?

可以,但有损耗OCR 工具链:Tesseract(开源)、PaddleOCR(中文强)、Google Cloud Vision(商业)、ABBYY FineReader(最准但付费)。精度影响因素:(1) DPI——300 DPI 是 OCR 准确率的甜点,低于 200 DPI 准确率断崖式下降;(2) 二值化——OCR 内部会把彩色图转黑白,扫描件背景偏黄会影响阈值,先用图像处理去黄;(3) 倾斜矫正——歪 5 度以上准确率显著下降,OCR 工具多数自带 deskew;(4) 字体 / 排版——印刷体 99%、手写体 70-90%、艺术字几乎无解;(5) 语言模型——中英文混排需要选支持中英文的 OCR。陷阱:原 PDF 如果就是矢量文字,不需要转图再 OCR——直接用 pdftotext 提取,准确率 100%。OCR 是给扫描件 / 拍照件用的兜底方案。

PDF 转图后某些字体显示成"豆腐块" / 错乱

字体没嵌入 + 转换工具找不到替代字体。原因:(1) PDF 创建时未嵌入字体(导出时没勾"嵌入字体");(2) 转换工具运行环境缺少该字体;(3) 中文 / 日韩字体特别容易缺——Linux 服务器默认无中文字体。对策:(1) 创建 PDF 时嵌入字体——Word / WPS 导出 PDF 时勾"嵌入字体"选项;(2) 转换环境装常用字体——Linux 服务器装思源黑体(Source Han Sans)/ Noto Sans CJK;(3) 用 pdftoppm / mutool(默认会调用系统字体替代);(4) 用 Adobe Acrobat 导出(自带字体库,替代准确度高)。测试:在转换环境用 fc-list :lang=zh 看有哪些中文字体。最可靠:转换前用 Adobe Acrobat 检查 PDF "属性 → 字体"标签——红色叹号 = 未嵌入需要替代。

大型 PDF(几百页)转图很慢,怎么加速?

几个层面优化。(1) 多线程——pdftoppm / mutool 默认单线程,按页范围分多个进程并行;(2) 不必要的高 DPI——300 DPI 比 150 DPI 多 4 倍像素,慢约 4 倍;(3) 指定页范围——只要某几页就 -f 10 -l 20;(4) 省略不需要的渲染——纯文字页可以低 DPI、含图页高 DPI 分开处理;(5) 用专门工具——MuPDF (mutool) 比 pdftoppm 快 2-5 倍;(6) 缓存——如果 PDF 不变,转换结果可缓存避免重复。典型耗时:300 页 PDF 转 200 DPI PNG 在 M1 Mac 大约 2-5 分钟;服务器 / Docker 环境通常 1-2 倍开销。避免:把 PDF 上传到在线工具——大文件上传 + 排队 + 下载比本地慢得多,且隐私不可控。

🖨️ 打开 PDF 转图片 PNG/JPG · 1×/2×/3× 清晰度 · 范围