从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.ppmimage-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         : 打印用法信息
  -?             : 打印用法信息

有用的链接