gpt4 book ai didi

python - 打印 PDF 并在打印完成后删除文件

转载 作者:可可西里 更新时间:2023-11-01 14:44:29 26 4
gpt4 key购买 nike

我有一个将被重复执行的 Python 应用程序。它将 PDF 另存为文件,然后进行打印。打印结束时,它会删除文件。

我的当前解决方案(对于打印和删除部分)是这样的:

win32api.ShellExecute(0, "print", file_path, None,  ".",  0)
time.sleep(10)
os.remove(self.options.dest_name)

time.sleep(10) 是一个技巧,让打印进程有时间在文件删除之前运行。如果没有它,Acrobat Reader 将打开(它无论如何都会打开)并警告它找不到该文件。这是因为文件删除已经发生。

问题是:

  1. 没有这个不靠谱的把戏我怎么办?最好的办法是为打印过程提供一个处理程序,并通过它获取有关打印状态的信息:我等待它报告它已完成,然后删除文件。

  2. 如果 Acrobat Reader 打不开就更好了,但这不是什么大问题。

编辑:我尝试切换到 Foxit Reader 作为默认 PDF 阅读器,但现在它在我不需要时无法打开。 ;)

其他可能的解决方案:循环检查文件是否可用(未被其他进程使用),当它可用时再次删除它。我怎么能用 Python 做到这一点?

最佳答案

最后我找到了一个很好的解决方案,感谢this answer (@Lennart 在评论中也提到了它):

install Ghostscript

install GSview (其中包括 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 reference

关于python - 打印 PDF 并在打印完成后删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4469629/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com