我有一堆文件需要通过 PDF 打印机打印,打印完成后我需要执行其他任务,但只有在最终完成时才执行。
因此,为了从我的 python 脚本执行此操作,我调用命令“lpr path/to/file.doc -P PDF”
但是此命令立即返回 0,我无法跟踪打印过程何时完成,是否成功等...
有一个选项可以在打印完成后发送电子邮件,但在我开始打印后等待电子邮件对我来说看起来很老套。
您对如何完成这项工作有什么想法吗?
编辑 1
有很多方法可以检查打印机当前是否正在打印某些内容。因此,在我开始打印某些东西后的那一刻,我每 0.5 秒运行一次 lpq
命令以查看它是否仍在打印。但在我看来这不是最好的方法。当实际打印过程完成时,我希望能够得到提醒或其他东西。成功与否等...
最佳答案
如果你有CUPS ,您可以使用 System V 兼容的 lp
而不是 lpr
。这会在 stdout
上打印作业 ID,例如
request id is PDF-5 (1 file(s))
(这是用于虚拟打印机 cups-pdf
)。然后,您可以在 lpstat
的输出中通过 grep
获取此 ID:
lpstat | grep '^PDF-5 '
如果没有产生任何输出,那么你的工作就完成了。 lpstat -l
生成更多状态信息,但其输出也将更难解析。
显然,有比运行这个实际的 shell 代码更干净的 Python 解决方案。不幸的是,我无法在不浏览作业列表的情况下找到检查单个作业状态的方法。
关于python - 如何在linux命令行上检查pdf打印是否完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14051766/