在 CUPS 中,我想保留所有新的打印机作业,检查我的打印机的墨盒水平,并一一发布打印作业。(我的打印机在低于一定百分比时会杀死墨盒芯片以防止重新填充。)
我有 CUPS 通知 (RSS) 并且可以获取我的墨盒水平。现在,我想在 CUPS (.../printers/myPrinter) 中的特定打印机上启用“hold-new-jobs”属性。在此之后,我必须找出如何获取所有暂停的作业并释放一个(通过作业 ID 等)(最好是 FIFO(FHFR))为了完整性:如果磁带低于阈值,则作业被暂停直到墨盒被重置(手动)并按下 Home Assistant 中的按钮。
Pycups(libcups Python 绑定)似乎没有文档记录,并且与 libcups 本身的差异足以迷失方向。pycups 似乎没有 IPPRequests 的例子。这是我的镜头(to_pdf 作为测试打印机):
import cups
# Response is a set of bytes. Not clear (to me) what it means and if its parsed or can be parsed somewhere.
def ipp_hold_new_jobs_request_handler(response):
print("Hold_all_jobs handler called. Response: {}".format(response))
ipp_request = cups.IPPRequest(cups.IPP_OP_HOLD_NEW_JOBS)
ipp_attribute = cups.IPPAttribute(cups.IPP_TAG_OPERATION, cups.IPP_TAG_URI, "printer-uri",
"http://cups.mydomain.ext:631/printers/to_pdf")
ipp_request.add(ipp_attribute)
response = ipp_request.writeIO(ipp_hold_new_jobs_request_handler)
print('repsonse: {}'.format(response)) # Returns -1
while True:
pass
如果此请求成功,我希望新作业在 CUPS Web 界面中显示为暂停。
也许我这样做完全错误。我希望有人可以帮助我解决这个问题。谢谢。