Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python将PDF转换为一系列图像_Python_Pdf_Imagemagick_Jpeg_Python Imaging Library - Fatal编程技术网

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

使用Python将PDF转换为一系列图像,python,pdf,imagemagick,jpeg,python-imaging-library,Python,Pdf,Imagemagick,Jpeg,Python Imaging Library,我正在尝试使用Python将多页PDF转换为一系列JPEG。我可以用可用的工具很容易地将PDF分解成单独的页面,但是我还没有找到任何可以将PDF转换成图像的东西 PIL不能工作,因为它不能读取PDF。我发现的两个选项是通过shell使用GhostScript或ImageMagick。这对我来说不是一个可行的选择,因为这个程序需要跨平台,而且我不能确定这两个程序中的任何一个都能在安装和使用它的机器上使用 有任何Python库可以做到这一点吗?有。您无法避免Ghostscript依赖关系。甚至Ima

我正在尝试使用Python将多页PDF转换为一系列JPEG。我可以用可用的工具很容易地将PDF分解成单独的页面,但是我还没有找到任何可以将PDF转换成图像的东西

PIL不能工作,因为它不能读取PDF。我发现的两个选项是通过shell使用GhostScript或ImageMagick。这对我来说不是一个可行的选择,因为这个程序需要跨平台,而且我不能确定这两个程序中的任何一个都能在安装和使用它的机器上使用


有任何Python库可以做到这一点吗?

有。

您无法避免Ghostscript依赖关系。甚至Imagemagick的PDF读取功能也依赖于Ghostscript。原因是PDF格式的复杂性:PDF不仅包含位图信息,而且主要包含矢量形状、透明胶片等。 此外,找出这些对象中的哪一个出现在哪一页上是相当复杂的

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


好消息是许多windows和Linux系统上都预装了Ghostscript,因为所有PDF打印机(Adobe Acrobat除外)都需要Ghostscript。

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

可能相关:

以下是使用python ghostscript模块(由“$pip install ghostscript”安装)对我有效的方法:


我还在我的电脑上安装了Ghostscript 9.18,否则它可能不会工作。

我想加入这一点是的,您可以将ImageMagick库包含在项目中--只需确保查看许可条款,以便在readmeCare中放入适当的内容,详细说明哪些绑定可能有用?您找到解决方案了吗?我开始工作了,但似乎无法让ImageMagick尊重页面。希望这有帮助-[()如果相关,那么在回答中提供相关部分。这似乎创建了新图像,我可以看到pdf缩略图,但由于某些原因,它没有关闭新创建的jpeg文件。我从python
获得了此输出
有什么想法吗?你能帮我解决这个问题吗?ghostscript似乎不支持python3@Idan亚科比,谢谢!这是我的蟒蛇27的最佳解决方案。
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)