2008-09-16 5 views
2

나는 인쇄용 컵을 사용하는 리눅스 응용 프로그램을 가지고 있지만, 인쇄하고 내 응용 프로그램을 바로 종료하면 내 인쇄물이 나타나지 않는다는 것을 알아 냈습니다. 그래서 내 응용 프로그램이 실제로 프린터가 종료되기 전에 프린터에서 나올 때까지 기다려야한다고 가정하므로 누구나 인쇄 완료 시점을 알려주는 방법을 알고 있습니까?CUPS를 사용하는 인쇄물, 언제 내 앱을 종료 할 수 있습니까?

libcups를 사용하여 내 응용 프로그램이 생성하는 포스트 스크립트 파일을 인쇄하고 있습니다. 그래서 명령을 사용하여 파일을 인쇄 한 다음 다시 내 응용 프로그램으로 돌아갑니다. 그래서 내 앱은 아직 문서를 만들지 않았을 때 문서가 프린터 대기열에 있다고 생각합니다. 따라서 모든 사용자가 시스템 트레이에있는 프린터 아이콘을 화면에 표시해야하는 것이 아니라 코드에서 솔루션을 얻는 것이므로 실제로 퇴장하기 전에 시도하고 종료하면 사실을 알릴 수 있습니다 . 또한 내가 생성 한 파일은 임시 파일이므로 끝날 때 알 수있어서 삭제할 수 있습니다.

+0

포스트 스크립트 인쇄 외에도 인쇄 방법은 무엇입니까? libcups 또는 명령 행 유틸리티를 사용하고 있습니까? –

+0

내 코드는 포스트 스크립트 파일을 생성 한 다음 libcups를 사용하여 인쇄합니다. 명령 줄을 사용하지 않습니다. – KPexEA

답변

0

앱을 종료 할 때 아직 인쇄가 완료되지 않았을 가능성이 큽니다. PDF 또는 다른 문서를 인쇄하기 위해 evince를 사용하는 경우 이는 알려진 버그이며 인쇄 작업이 진행되고 있음을 시각적으로 확인하지는 못합니다. 인쇄 작업이 제출되면 실제 인쇄가 끝날 때까지 시스템 트레이에 프린터 아이콘이 나타납니다. 시스템 트레이의 프린터 아이콘을 클릭하여 현재 실행중인 작업과 보류중인 작업을 확인할 수 있습니다.

1

CUPS 웹 인터페이스 (localhost : 631) 또는 CUPS가 보았던 것을 보는 다른 것이 바로 CUPS가 작업을 수신했다는 것을 알게되면 즉시 응용 프로그램을 종료 할 수 있습니다.

1

lpr & lpq과 같은 인쇄 스풀 서비스를 사용하는 것은 어떻습니까?

+0

'lpr' 자체가 인쇄 스풀 서비스가 아닙니다. 실제 인쇄 스풀 서비스로 작업을 보내는 것은 클라이언트 명령입니다. 'lpq' 자체는 인쇄 스풀 서비스가 아닙니다. 실제 인쇄 스풀 서비스에 쿼리를 보내는 것은 클라이언트 명령입니다. 실제 인쇄 스풀 서비스는'lpd'입니다. 또는 CUPS :'cupsd'. –

1

용지가 프린터에서 나올 때까지 기다릴 필요가 없습니다. 그러나 임시 파일이 스풀링 영역 (일반적으로 /var/spool/cups/)의 cupsd에서 완전히 수신 될 때까지 기다려야합니다.

CUPS lp 또는 lpr 명령 중 하나를 사용하여 명령 줄에 인쇄 한 경우 쉘 프롬프트가 반환되면 작업이 진행 중임을 알 수 있습니다 (명령은 전송 된 작업의 CUPS 작업 ID를보고합니다). 종료 코드 ($?)가 0 인 경우

원하는 것을 얻기 위해 사용하는 libcups 및 함수 호출의 부분을 나타내지는 않습니다. 이 작업을 수행해야한다면 IPP 함수 cupsSendRequest을 사용한 다음 cupsGetResponse을 사용하여 결과를 알 수 있습니다.

+0

cupsPrintFile 함수를 호출하려고합니다. – KPexEA

관련 문제