0

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

以下代码在 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 文件吗?

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

4

1 回答 1

0

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

args 是 Ghostscript 参数。这些都记录在 Ghostscript 文档中,您可以在此处在线找到它。因为它模仿了命令行界面,其中第一个参数是调用程序,所以这里的第一个参数没有意义,可以是任何你想要的(正如评论所说)。

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

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

然后是OutputFile,您可能会猜到这是要写入输出的文件的名称(和路径)。

接下来的 3 个参数;-c .setpdfwrite -f坦率地说,是陈旧的和毫无意义的。曾经在使用 pdfwrite 设备(并且只有pdfwrite 设备)时推荐过它们,但如今它们没有任何用处。

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

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

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

于 2020-04-27T07:19:02.633 回答