본문 바로가기

프로그래밍/미분류

[SO번역] CUPS 시스템에서 포스트 스크립트 드라이버 출력을 가로채기

반응형

https://stackoverflow.com/questions/42154774/intercepting-a-postscript-driver-output-on-a-cups-system

CUPS 시스템에서 포스트 스크립트 드라이버 출력을 가로채기



질문 :


Linux PC 에서 CUPS 를 사용한다. CUPS 로 연결된 프린터가 있다. CUPS 드라이버가 생성해서 프린터로 보내는 PostScript 문서를 얻어내는 게 가능할까?


답변 :


1. 프린터큐를 정지시키고, /var/spool/cups 에 있는 작업파일을 가져오라는 조언은 좀 부족하다.

 - 그 파일은 (포스트 스크립트) 프린터로 보내지는 작업파일이 **아니다**.
 - 그 파일은 CUPS 에게 (어플리케이션으로부터) 전달되는 원래형식의 작업파일이다.

CUPS 에게 전달된 그 파일은 이미 포스트 스크립트 형식일 수도 있다 (예를 들어, 인쇄한 어플리케이션이 FireFox 인 경우). 하지만, CUPS 가 받아서 처리할 수 있는 다른 형식 (text, image, PDF 또는 raw 입력형식) 일 수도 있다. 포스트스크립트형식이라 할지라도, CUPS 가 받은 파일을 프린터로 보내기 전에 추가적인 처리를 할 수도 있다. 어떤 처리가 더해질지는 해당 인쇄작업에 사용자가 어떤 옵션을 주었는지에 따라 다르다.

2. 정말로 CUPS에서 프린터로 보내지는 정확한 바이트스트림을 가로채고 싶다면, 좀 더 복잡한 작업이 필요하다. 

하지만, 운이 좋다면, 아래와 같은 단계를 통해 좀 더 간단하게 할 수도 있다.

 - cupsd.conf 에 "FileDevice Yes" 을 추가한다. (저장후 CUPS 서비스를 중지했다 재시작한다.)
 - 현재의 backend URI 를 다음 명령으로 확인하여 기록해 놓는다. (이것은 향후 원래대로 복구하기 위한 것이다.)
      lpstat -v 
 - CUPS 프린터큐의 속성을 다음 명령으로 수정한다.
     lpadmin -p printername -v file:/var/spool/cups/tmp/ps-test.ps  
 - 이제 프린터큐는 실제 프린터 디바이스의 URI 로의 연결이 끊기고, 새로운 "file" 디바이스로 "연결"되었다. 이제부터 모든 프린트잡은 /var/spool/cups/tmp/ps-test.ps 파일로 저장될 것이다. (이 작업에 root 권한이 필요할 수 있다.)

문제의 시스템이 최근의 CUPS 버전을 사용하고 있다면, 안타깝게도, "FileDevice" 설정은 보안적 이유에 의해 없어졌기 때문에, 위 방법은 사용할 수 없다.

728x90