我有一个将重复执行的Python应用程序。它将 PDF 保存为文件,然后打印。打印结束时,它会删除该文件。
My 当前解决方案(对于打印和删除部分)是这样的:
win32api.ShellExecute(0, "print", file_path, None, ".", 0)
time.sleep(10)
os.remove(self.options.dest_name)
time.sleep(10)
is a trick在文件删除之前给打印进程运行的时间。如果没有它,Acrobat Reader 将打开(无论如何都会打开)并警告它找不到该文件。这是因为文件删除已经发生。
The question is:
如果没有这种不可靠的技巧,我该如何做到呢?最好的办法是为打印过程提供一个处理程序,并通过它获取有关打印状态的信息:我等待它报告它已完成,然后删除该文件。
如果 Acrobat Reader 打不开就更好了,但这并不是一个大问题。
编辑:我尝试切换到 Foxit Reader 作为默认 PDF 阅读器,但现在当我不想要时它不会打开。 ;)
其他可能的解决方案:
循环检查文件是否可用(未被其他进程使用),当它再次可用时将其删除。我怎样才能用Python做到这一点?
终于找到一个好的解决方案了,感谢这个答案 https://stackoverflow.com/questions/4498099/silent-printing-of-a-pdf-in-python/4498956#4498956(@Lennart 在评论中也提到了这一点):
安装 Ghostscript http://pages.cs.wisc.edu/~ghost/
安装 GSview http://mirror.cs.wisc.edu/pub/mirrors/ghost/ghostgum/(包括gsprint.exe
)
写下这段代码:
file_path = "C:\\temp\\test.pdf"
p = subprocess.Popen(["C:\\Ghostgum\\gsview\\gsprint.exe", "-printer", printer_name, "-colour", file_path],
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = p.communicate() # waits for the gs process to end
os.remove(file_path) # now the file can be removed
无法打开 Acrobat 窗口,打印前无法删除文件... 烦恼:安装 GS。
也可以看看:gsprint参考 http://pages.cs.wisc.edu/~ghost/gsview/gsprint.htm
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)