【问题标题】:How to check if pdf printing is finished on linux command line如何在linux命令行上检查pdf打印是否完成
【发布时间】:2012-12-12 16:06:54
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 您确定您可以作为用户执行此操作吗?我对此持怀疑态度,因为我的 HP 打印机发送了作业并完成了。它从打印机队列中消失为“已发送”,但打印机可能需要几秒钟才能开始打印,我真的不知道打印机是否可以将反馈发送回计算机。

标签: python linux command-line


【解决方案1】:

如果您有CUPS,则可以使用 System V 兼容的lp 而不是lpr。这会在 stdout 上打印作业 ID,例如

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

(这是用于虚拟打印机cups-pdf)。然后,您可以在 lpstat 的输出中为该 id 提供 grep

lpstat | grep '^PDF-5 '

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

显然,有更简洁的 Python 解决方案,然后运行这个实际的 shell 代码。不幸的是,如果不浏览作业列表,我找不到检查单个作业状态的方法。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-24
      • 2012-09-21
      • 2013-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-12
      相关资源
      最近更新 更多