我有一堆文件需要通过PDF打印机打印,打印后我需要执行其他任务,但只有在最终完成时才能执行。
所以要从我的python脚本执行此操作,我调用命令“lpr path / to / file.doc -P PDF”
但是这个命令会立即返回0并且我无法跟踪打印过程何时完成,是否成功等等...
有一个选项可以在打印完成后发送电子邮件,但是在我开始打印后等待电子邮件对我来说非常黑客。
你对如何完成这项工作有什么想法吗?
修改1
有很多方法可以检查打印机当前是否正在打印某些内容。因此,在我开始打印之后的那一刻,我每0.5秒运行lpq
命令,以查明它是否仍在打印。但这看起来并不是最好的方法。我希望能够在实际打印过程结束时收到警报或其他信息。它是否成功等......
答案 0 :(得分:1)
您可以使用lpstat
命令(man lpstat
)检查打印机的状态。要等待进程完成,请获取进程的PID并将其作为参数传递wait
答案 1 :(得分:1)
如果您有CUPS,则可以使用与System V兼容的lp
代替lpr
。这会在stdout
上打印作业ID,例如
request id is PDF-5 (1 file(s))
(这适用于虚拟打印机cups-pdf
)。然后,您可以在grep
的输出中lpstat
获取此ID:
lpstat | grep '^PDF-5 '
如果没有输出,那么你的工作就完成了。 lpstat -l
生成更多状态信息,但其输出也将难以解析。
显然,有更清晰的Python解决方案然后运行这个实际的shell代码。不幸的是,我无法找到一种方法来检查单个作业的状态而不需要查看作业列表。