如何检查pdf打印是否在linux命令行上完成

时间:2012-12-27 08:42:02

标签: python linux command-line

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

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

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

有一个选项可以在打印完成后发送电子邮件,但是在我开始打印后等待电子邮件对我来说非常黑客。

你对如何完成这项工作有什么想法吗?

修改1 有很多方法可以检查打印机当前是否正在打印某些内容。因此,在我开始打印之后的那一刻,我每0.5秒运行lpq命令,以查明它是否仍在打印。但这看起来并不是最好的方法。我希望能够在实际打印过程结束时收到警报或其他信息。它是否成功等......

2 个答案:

答案 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代码。不幸的是,我无法找到一种方法来检查单个作业的状态而不需要查看作业列表。