Python中Ghostscript的语法

3 投票
3 回答
5918 浏览
提问于 2025-04-16 07:11

我在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'])

3 个回答

1

这个方法有效(用Python写的):

os.system('gs -dSAFER -dNOPAUSE -dQUIET -dBATCH -sDEVICE=jpeg -sOUTPUTFILE=/home/user/output2.jpg /home/user/Downloads/test.pdf')
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 )
3

你最后的两个参数是连在一起的,所以它不能正常工作;这就像在你的终端里运行 gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=jpeg '-sOutputFile=/home/user/output.jpg /home/user/downloads/test.pdf',你肯定不会指望它能正常工作。

把最后两个参数分开,它就应该能正常工作了:

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

撰写回答