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을 실행하는 Raspberry Pi에 연결된 영수증 프린터입니다.

성공적인 인쇄를 위해 컵 로그 파일을 모니터링하는 것을 고려했지만 이는 잘못된 접근 방식인 것 같습니다.

다른 곳에서 해결책을 찾을 수 있을지 모르겠습니다. 누구든지 아이디어가 있으면 공유해 주세요.

답변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*의 함수가 cupsIPP 오류 코드를 반환하기 때문입니다.

하위 프로세스의 상태 코드를 확인하는 것도 작동하지만 pycups코드를 직접 제공받는 경우 불필요한 오버헤드처럼 보입니다.

관련 정보