편집: 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*
의 함수가 cups
IPP 오류 코드를 반환하기 때문입니다.
하위 프로세스의 상태 코드를 확인하는 것도 작동하지만 pycups
코드를 직접 제공받는 경우 불필요한 오버헤드처럼 보입니다.