4

我有一堆文件需要通过 PDF 打印机打印,打印后我需要执行其他任务,但只有当它最终完成时。

所以要从我的 python 脚本中执行此操作,我调用命令“lpr path/to/file.doc -P PDF”

但是这个命令立即返回 0 并且我无法跟踪打印过程何时完成,是否成功等等......

打印完成后有一个发送电子邮件的选项,但是在我开始打印后等待电子邮件对我来说看起来很麻烦。

你有一些想法如何完成这项工作吗?

编辑 1 有很多方法可以检查打印机当前是否正在打印某些内容。因此,在我开始打印某些内容后,我lpq每 0.5 秒运行一次命令以查看它是否仍在打印。但这在我看来并不是最好的方法。我希望能够在实际打印过程完成时得到警报或其他东西。成功与否之类的...

4

2 回答 2

2

如果您有CUPS,您可以使用 System V-compatiblelp而不是lpr. 这会在 上打印stdout作业 id,例如

request id is PDF-5 (1 file(s))

(这是用于虚拟打印机cups-pdf)。然后,您可以grep在以下输出中获取此 id lpstat

lpstat | grep '^PDF-5 '

如果这没有产生输出,那么你的工作就完成了。lpstat -l产生更多的状态信息,但其输出也将难以解析。

显然,有更干净的 Python 解决方案,然后运行这个实际的 shell 代码。不幸的是,如果不翻阅工作列表,我找不到检查单个工作状态的方法。

于 2012-12-27T12:02:51.260 回答
1

lpstat您可以使用命令 ( man lpstat)检查打印机的状态。要等待进程完成,请获取进程的 PID 并将其wait命令作为参数传递

于 2012-12-27T10:06:44.600 回答