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

标签 python linux command-line

我有一堆文件需要通过 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/

相关文章:

python - 如何在包内引用 Python 中的顶级模块?

c++ - 调用recv()会导致段错误

c - 当有 `-L` 时使用 `LD_LIBRARY_PATH` 有什么意义?

command-line - 如何访问 Rust 中的命令行参数?

python - 在哪里可以找到 Python 类?

python - 并行调用对象方法

linux - 如何批量调整数百万张图片的大小以适应最大宽度和高度?

php - 在 Windows 命令行上运行 PHP 脚本时,PDO ODBC 连接出现 "Could not find driver"错误

c++ - 传入字符串作为命令行参数

javascript - 可以使用 JavaScript 函数调用 Python 函数吗?