2

我已经在 Linux 上安装了 python-ghostscript。我可以从命令行运行 gs,它会从 pdf 创建一个 jpg。这是有效的代码:

~$ gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=jpeg -sOutputFile=/home/user/output.jpg /home/user/downloads/test.pdf

我正在尝试在 Python 中运行该过程,但我无法获得语法。我没有错误,但没有任何反应。我试图阅读 Popen/subprocess,但我不明白为什么我调用的 gs 进程没有运行并创建文件。

output = Popen(['gs','-dSAFER','-dNOPAUSE','-dBATCH','-sDEVICE=jpeg','-sOutputFile=/home/user/output2.jpg /home/user/downloads/test.pdf'])
4

3 回答 3

3

Your last two parameters are joined, so it can't work; it's effectively the same as running in your terminal gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=jpeg '-sOutputFile=/home/user/output.jpg /home/user/downloads/test.pdf', which you wouldn't expect to work.

Separate those last two and it should work:

output = Popen(['gs', '-dSAFER', '-dNOPAUSE', '-dBATCH', '-sDEVICE=jpeg', '-sOutputFile=/home/user/output2.jpg', '/home/user/downloads/test.pdf'])
于 2010-12-02T03:31:46.293 回答
1

这有效(python):

os.system('gs -dSAFER -dNOPAUSE -dQUIET -dBATCH -sDEVICE=jpeg -sOUTPUTFILE=/home/user/output2.jpg /home/user/Downloads/test.pdf')
于 2010-12-02T03:13:59.033 回答
1

要测试出了什么问题,您可以像这样通过管道传输标准输出:

import sys, subprocess

args = ['gs','-dSAFER','-dNOPAUSE','-dBATCH','-sDEVICE=jpeg','-sOutputFile=/home/user/output2.jpg /home/user/downloads/test.pdf']
output = Popen( args, stdout = sys.stdout, stderr = sys.stderr )
于 2010-11-17T08:39:49.973 回答