使用Python将PDF转换为一系列图像

我正在尝试使用Python将多页PDF转换为一系列JPEG。 我可以使用可用的工具轻松地将PDF分为多个页面,但是我找不到能够将PDF转换为图像的任何东西。

PIL无法工作,因为它无法读取PDF。 我找到的两个选项是通过外壳使用GhostScript或ImageMagick。 这对我来说不是一个可行的选择,因为该程序需要跨平台,而且我不确定这些程序中的任何一个都可以在将要安装和使用的计算机上使用。

有没有可以做到这一点的Python库?

5个解决方案
20 votes

ImageMagick具有Python绑定。

Adam Rosenfield answered 2020-06-29T18:13:37Z
7 votes

这是使用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,否则它可能无法正常工作。

Idan Yacobi answered 2020-06-29T18:14:01Z
4 votes

您无法避免Ghostscript依赖性。 甚至Imagemagick也依靠Ghostscript实现PDF阅读功能。 其原因是PDF格式的复杂性:PDF不仅包含位图信息,而且大部分包含矢量形状,透明胶片等。此外,弄清楚这些对象中的哪个出现在哪个页面上是相当复杂的。

因此,PDF页面的正确呈现显然超出了纯Python库的范围。

好消息是,Ghostscript已预先安装在许多Windows和Linux系统上,因为所有这些PDF打印机(Adobe Acrobat除外)也都需要它。

Franz answered 2020-06-29T18:14:30Z
1 votes

如果您使用的是Linux,则某些版本附带了一个名为“ pdftopbm”的命令行实用程序。 签出netpbm

Jay answered 2020-06-29T18:14:50Z
1 votes

可能相关:[http://www.swftools.org/gfx_tutorial.html]

mattbasta answered 2020-06-29T18:15:10Z
translate from https://stackoverflow.com:/questions/331918/converting-a-pdf-to-a-series-of-images-with-python