python ghostscript不关闭输出文件

Jed*_*Jed 3 python pdf jpeg ghostscript

我正在尝试将一页或多页的PDF文件转换为每页的图像。这非常像这里的问题。实际上,我正在尝试使用该帖子中@Idan Yacobi的代码来完成此任务。他的代码如下所示:

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)
Run Code Online (Sandbox Code Playgroud)

当我运行代码时,我从python得到以下输出: ##### 238647312 c_void_p(238647312L)

当我查看应该在其中创建新.jpg图像的文件夹时,那里有一个具有新名称的文件。但是,当我尝试打开文件时,图像预览显示“ Windows Photo Viewer无法打开该图片,因为该图片正在其他程序中进行编辑。”

似乎出于某种原因,Ghostscript打开了文件并写入了文件,但是在完成后没有关闭文件。我有什么办法可以强迫这种情况发生?还是我想念其他东西?

我已经尝试将上面的最后一行更改为下面的代码,以在完成后显式关闭ghostscript。

GS = ghostscript.Ghostscript(*args)
GS.exit()
Run Code Online (Sandbox Code Playgroud)

小智 5

我遇到了同样的问题,即图像文件保持打开状态,但是当我查看ghostscript 初始化 .py文件(位于以下目录:PythonDirectory \ Lib \ site-packages \ ghostscript__init __。py)时,exit方法有一行评论。

默认情况下,gs.exit(self._instance)行被注释,但是当您取消注释该行时,图像文件将被关闭。

def exit(self):
    global __instance__
    if self._initialized:
        print '#####', self._instance.value, __instance__
        if __instance__:
            gs.exit(self._instance) # uncomment this line
            self._instance = None
        self._initialized = False
Run Code Online (Sandbox Code Playgroud)