我希望使用ghostscript压缩目录中的所有pdf文件。 我想过使用python来读取文件 和压缩pdf的gs命令是
from __future__ import print_function
import os
for path, dirs, files in os.walk("/home/mario/books"):
for file in files:
if file.endswith(".pdf"):
filename = os.path.join(root, file)
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dBATCH -dQUIET -sOutputFile=file filename
这会在" / screen"中出现语法错误, 对于单个文件,命令工作正常
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dBATCH -dQUIET -sOutputFile=output.pdf input.pdf
有人可以帮我纠正这个脚本或替代解决方案吗?
答案 0 :(得分:1)
感谢tdelaney的建议我尝试了subprocess.call,这有帮助。下面是代码解决了问题。
from __future__ import print_function
import os
import subprocess
for root, dirs, files in os.walk("."):
for file in files:
if file.endswith(".pdf"):
filename = os.path.join(root, file)
arg1= '-sOutputFile=' +"v"+ file
p = subprocess.Popen(['/usr/bin/gs', '-sDEVICE=pdfwrite', '-dCompatibilityLevel=1.4', '-dPDFSETTINGS=/screen', '-dNOPAUSE', '-dBATCH', '-dQUIET', str(arg1), filename], stdout=subprocess.PIPE)
print (p.communicate())
同时找到... -exec是shell脚本的不错选择。