如何使用 Python Ghostscript 的高级接口将一个 .pdf 文件转换为多个 .png 文件?

How do you use Python Ghostscript's high-level interface to convert a .pdf file into multiple .png files?

我正在尝试使用 Python 中的 Ghostscript 将一个 .pdf 文件转换为多个 .png 文件。这里的其他答案很旧,因此这个新线程。

以下代码是在 'high level' 接口的 pypi.org 上作为示例给出的,我正在尝试按照下面的示例代码对我的代码进行建模。

import sys
import locale
import ghostscript

args = [
    "ps2pdf", # actual value doesn't matter
    "-dNOPAUSE", "-dBATCH", "-dSAFER",
    "-sDEVICE=pdfwrite",
    "-sOutputFile=" + sys.argv[1],
    "-c", ".setpdfwrite",
    "-f",  sys.argv[2]
    ]

# arguments have to be bytes, encode them
encoding = locale.getpreferredencoding()
args = [a.encode(encoding) for a in args]

ghostscript.Ghostscript(*args)

有人可以解释这段代码的作用吗?它能以某种方式用于将 .pdf 转换为 .png 文件吗?

我是新手,真的很困惑。非常感谢!

这显然是在调用 Ghostscript。从它没有产生进程的参数来看,它链接(动态或静态)到 Ghostscript 库。

参数是 Ghostscript 参数。这些都记录在Ghostscript文档中,你可以在网上找到它here。因为它模仿命令行界面,第一个参数是调用程序,所以这里的第一个参数是没有意义的,可以是你想要的任何东西(如注释所说)。

接下来的三个参数打开 SAFER(它可以防止一些潜在的危险操作,现在无论如何都是默认设置),设置 NOPAUSE 以便处理整个输入而不会在页面之间暂停,以及 BATCH 以便在完成时退出 Ghostscript而不是返回交互式提示。

然后选择一个设备。在 Ghostscript 中(由于 PostScript 语言)设备是实际输出的东西。在这种情况下,选择的设备是 pdfwrite 设备,它输出 PDF。

然后是OutputFile,你大概能猜到这是要写入输出的文件名(和路径)。

接下来的3个参数; -c .setpdfwrite -f 坦率地说是过时且毫无意义的。它们曾经在使用 pdfwrite 设备时被推荐使用(并且 pdfwrite 设备)但是这些天它们没有任何有用的效果。

最后一个参数当然是输入文件。

当然,您可以使用 Ghostscript 将 PDF 文件渲染为 PNG。您想要使用其中一种 PNG 设备,有多种设备取决于您要支持的颜色深度。除非你有一些陌生的要求,否则就使用 png16m。如果您的输入文件包含多个页面,您需要将 OutputFile 设置为使用 %d 以便它每页写入一个文件。

当然,可以在文档中找到有关所有这些的更多详细信息。