我正在尝试使用 Python 将多页 PDF 转换为一系列 JPEG。我可以使用可用工具轻松地将 PDF 拆分为单独的页面,但我无法找到任何可以将 PDF 转换为图像的内容。
PIL 不起作用,因为它无法读取 PDF。我发现的两个选项是通过 shell 使用 GhostScript 或 ImageMagick。这对我来说不是一个可行的选择,因为这个程序需要是跨平台的,而且我不能确定这些程序中的任何一个在将要安装和使用它的机器上是否可用。
是否有任何 Python 库可以做到这一点?
我正在尝试使用 Python 将多页 PDF 转换为一系列 JPEG。我可以使用可用工具轻松地将 PDF 拆分为单独的页面,但我无法找到任何可以将 PDF 转换为图像的内容。
PIL 不起作用,因为它无法读取 PDF。我发现的两个选项是通过 shell 使用 GhostScript 或 ImageMagick。这对我来说不是一个可行的选择,因为这个程序需要是跨平台的,而且我不能确定这些程序中的任何一个在将要安装和使用它的机器上是否可用。
是否有任何 Python 库可以做到这一点?
这是使用 python ghostscript 模块(由'$ pip install ghostscript'安装)对我有用的东西:
import ghostscript
def pdf2jpeg(pdf_input_path, jpeg_output_path):
args = ["pdf2jpeg", # actual value doesn't matter
"-dNOPAUSE",
"-sDEVICE=jpeg",
"-r144",
"-sOutputFile=" + jpeg_output_path,
pdf_input_path]
ghostscript.Ghostscript(*args)
我还在我的电脑上安装了 Ghostscript 9.18,否则它可能无法正常工作。
你无法避免 Ghostscript 依赖。甚至 Imagemagick 也依赖 Ghostscript 的 PDF 阅读功能。其原因在于 PDF 格式的复杂性:PDF 不仅包含位图信息,而且主要包含矢量形状、透明度等。此外,确定这些对象中的哪些出现在哪个页面上非常复杂。
因此,PDF 页面的正确呈现显然超出了纯 Python 库的范围。
好消息是 Ghostscript 已预装在许多 Windows 和 Linux 系统上,因为所有那些 PDF 打印机(Adobe Acrobat 除外)也需要它。
如果您使用的是 linux,则某些版本会附带一个名为“pdftopbm”的命令行实用程序。查看netpbm