从PDF中提取图像
当你需要从PDF文件中提取图像时
有时确实需要从 PDF 中提取图像,而无需截图或在屏幕上渲染 PDF。
pdfimages
可以帮助实现这一点。
在 Linux 中从 PDF 文件中提取图像,最常见且有效的工具是命令行实用程序 pdfimages,
它是 poppler-utils
软件包的一部分。
在 Linux 中使用 pdfimages
工具:逐步指南
1. 安装 pdfimages(如果尚未安装):
大多数 Linux 发行版默认包含 pdfimages
。如果需要,使用包管理器进行安装:
sudo apt-get install poppler-utils
或对于 Fedora:
sudo dnf install poppler-utils
2. 打开终端:
按下 Ctrl + Alt + T
以打开终端窗口。
3. 运行 pdfimages 提取图像:
基本语法:
pdfimages
示例:
pdfimages /path/to/file.pdf /path/to/output/image
- 这将从
file.pdf
中提取所有图像,并以image-000.ppm
、image-001.ppm
等格式保存在指定的输出目录中。
4. 以 JPEG 格式提取图像(如果需要):
要以 JPEG 格式提取图像(如果可能),使用 -j
选项:
pdfimages -j /path/to/file.pdf /path/to/output/image
- 这将保存为
.jpg
文件。
5. 从特定页面提取图像:
- 要从特定页面范围提取图像,使用
-f
(起始页)和-l
(结束页):
pdfimages -f 2 -l 5 -j /path/to/file.pdf /path/to/output/image
- 这将提取第 2 到第 5 页的图像。
6. 其他选项:
- 要以 PNG 格式提取图像:使用
-png
(如果您的版本支持)。 - 对于受密码保护的 PDF,使用
-opw 'ownerpassword'
或-upw 'userpassword'
。
注意事项
- 默认输出格式是 PPM(彩色)或 PBM(黑白)。使用
-j
以 JPEG 格式输出,或使用 ImageMagick 的convert
等工具将 PPM/PBM 文件转换为其他格式(如需)。 - 输出文件会自动编号并保存在指定的目录中。
总结表
命令示例 | 描述 |
---|---|
pdfimages input.pdf image |
以默认的 PPM/PBM 格式提取所有图像 |
pdfimages -j input.pdf image |
在可能的情况下提取为 JPEG 格式 |
pdfimages -f 3 -l 5 input.pdf image |
提取第 3 到第 5 页的图像 |
pdfimages -opw 'password' -j input.pdf image |
提取受所有者密码保护的 PDF 中的图像 |
此方法高效且适用于大多数包含嵌入图像的 PDF。但:
pdfimages
仅提取图像的原始分辨率。- 要控制输出分辨率,请使用 PDF 渲染器如 PyMuPDF,并在创建图像时指定所需的 DPI。
如何以特定分辨率从 PDF 中保存图像。
使用 pdfimages
时,无法指定提取图像的分辨率,因为该工具以原始格式和分辨率提取嵌入的图像,而不会进行重采样或更改质量。分辨率由图像在 PDF 中的存储方式决定,pdfimages
不提供在提取过程中放大或缩小的选项。
如果您希望以特定分辨率提取图像(例如,以选定的 DPI 渲染页面或页面的一部分),需要使用 PDF 渲染库或工具,如 PyMuPDF(fitz
)。使用 PyMuPDF 时,可以通过 dpi
参数指定所需的分辨率来渲染页面为图像:
import fitz # PyMuPDF
doc = fitz.open("input.pdf")
page = doc.load_page(0) # 第一页
pix = page.get_pixmap(dpi=300) # 以 300 DPI 渲染
pix.save("output.png")
这种方法会以指定的 DPI 创建页面的光栅图像,而不是提取原始嵌入的图像。
其他从 PDF 中提取图像的工具
提取图像而不丢失分辨率的最佳软件是那些能够直接提取 原始嵌入图像 的工具,而不是渲染或重采样它们。首选工具包括:
-
Adobe Acrobat Pro:提供专门的“导出所有图像”功能,可以以原始质量和格式提取图像作为独立文件。此方法非常可靠,可保留 PDF 中存储的图像的精确分辨率和质量。
-
pdfimages(来自 XPDF/Poppler 套件):一款免费、开源的命令行工具,可在 Linux 和其他平台上使用。
pdfimages
以原生格式和分辨率提取 PDF 中的所有图像,包括对 JPEG、JPEG2000 等格式的支持。它被广泛推荐给寻求无成本、高保真提取过程的用户。 -
在线工具(如 PDF24 Tools、PDFCandy、pdfforge):这些服务允许您上传 PDF 并下载提取的图像,保留原始分辨率。它们适合快速任务,无需安装,但可能对敏感文档存在隐私问题。
总结表
软件/工具 | 平台 | 保留原始分辨率 | 备注 |
---|---|---|---|
Adobe Acrobat Pro | Windows/Mac | 是 | 付费,专业级,非常可靠 |
pdfimages (Poppler) | Linux/Windows | 是 | 免费,开源,命令行工具 |
PDF24 Tools, PDFCandy | Web-based | 是 | 免费,易于使用,隐私考虑 |
关键点:
始终使用能够 提取(而不是渲染或截图)图像的工具。Adobe Acrobat Pro 和 pdfimages
都是此目的的行业标准,确保图像以 PDF 中存在的形式保存,而不会丢失任何分辨率。
pdfutils 命令行选项
执行 pdfimages /help
时,它会打印类似以下内容:
$ pdfimages /help
pdfimages 版本 24.02.0
版权所有 2005-2024 Poppler 开发者 - http://poppler.freedesktop.org
版权所有 1996-2011, 2022 Glyph & Cog, LLC
用法: pdfimages [选项] <PDF文件> <图像根>
-f <int> : 要转换的第一页
-l <int> : 要转换的最后一页
-png : 将默认输出格式更改为 PNG
-tiff : 将默认输出格式更改为 TIFF
-j : 将 JPEG 图像写为 JPEG 文件
-jp2 : 将 JPEG2000 图像写为 JP2 文件
-jbig2 : 将 JBIG2 图像写为 JBIG2 文件
-ccitt : 将 CCITT 图像写为 CCITT 文件
-all : 等效于 -png -tiff -j -jp2 -jbig2 -ccitt
-list : 打印图像列表而不是保存
-opw <string> : 所有者密码(用于加密文件)
-upw <string> : 用户密码(用于加密文件)
-p : 在输出文件名中包含页码
-q : 不打印任何消息或错误
-v : 打印版权和版本信息
-h : 打印用法信息
-help : 打印用法信息
--help : 打印用法信息
-? : 打印用法信息