CUPS - 检查打印是否成功(Python 或系统中)

CUPS - 检查打印是否成功(Python 或系统中)

编辑:我忘了说清楚我正在使用 python 和 pycups。代码是 python,但我不应该认为这就足够了。

我已经翻阅了杯子文档几次,但找不到任何可以执行此操作的内容。成功打印后是否返回任何可以捕获的消息?

例如在这段代码中:

import os
import cups

conn = cups.Connection()

f = open('testreceipt.txt', 'w')
f.write('something')
f.close()
printer_returns = conn.printFile('EPSON_TM-P2.01', 'testreceipt.txt', 'test', {})
print printer_returns

所有 print_returns 被分配的似乎都是打印作业 ID (208,209,...,n)。无论是否连接打印机,都会发生这种情况,因此不能依赖进行确认。

在这种情况下,目标打印机是收据打印机,通过串行-> USB 电缆连接到运行 raspbian 的树莓派。

我考虑过监视 cups 日志文件以获取成功的打印,但这似乎是一个糟糕的方法。

我不知道还能去哪里寻找解决方案,所以如果有人有想法,请分享。

答案1

我正在使用 getJobs 来验证作业是否已发送到打印机。

printid = conn.printFile('EPSON_TM-P2.01', 'testreceipt.txt', 'test', {})
while conn.getJobs().get(printid, None) is not None:
    time.sleep(1)

答案2

你可以等到

conn.getJobAttributes(printer_returns)["job-state"]

等于 9 (IPP_JOB_COMPLETED)

答案3

发送文档后,检查cupsLastErrorString.如果它为空,那么你应该很好。此外,大多数函数应该告诉您它是否失败,因为它们返回一个整数。

在这里找到

答案4

我相信 pycups 中的等价物是IPP错误类(请注意try / except示例代码),因为cupsLastError*中的函数cups返回 IPP 错误代码。

检查子进程的状态代码也应该可以工作,但如果pycups直接给你代码,似乎是不必要的开销。

相关内容