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

51 投票
5 回答
48016 浏览
提问于 2025-04-11 19:10

我正在尝试用Python把一个多页的PDF文件转换成一系列的JPEG图片。我可以很容易地把PDF拆分成单独的页面,使用一些现成的工具就可以做到,但我找不到可以把PDF转换成图片的工具。

PIL这个库不行,因为它无法读取PDF文件。我找到的两个选择是使用GhostScript或ImageMagick,通过命令行来操作。但这对我来说不可行,因为这个程序需要跨平台使用,我不能确定这两个程序在安装和使用的机器上是否都能找到。

有没有什么Python库可以做到这一点呢?

5 个回答

4

你无法避免使用Ghostscript这个工具。即使是Imagemagick也需要依赖Ghostscript来读取PDF文件。原因在于PDF格式非常复杂:PDF不仅仅包含位图信息,更多的是矢量图形、透明度等等。而且,搞清楚这些对象在每一页上是如何显示的也相当复杂。

所以,正确显示PDF页面的工作显然超出了纯Python库的能力范围。

好消息是,很多Windows和Linux系统上都预装了Ghostscript,因为所有的PDF打印机(除了Adobe Acrobat)都需要用到它。

9

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

21

ImageMagick 是一个可以处理图片的软件,它有Python的接口

撰写回答