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" 설정은 보안적 이유에 의해 없어졌기 때문에, 위 방법은 사용할 수 없다.
'프로그래밍 > 미분류' 카테고리의 다른 글
virtualbox 에서 실행시킨 macOS 에서 하드웨어 가속기능으로 화면이 이상해지는 문제 (0) | 2022.06.09 |
---|---|
[SO번역] CUPS 를 이용해 "Print to PDF" 필터 또는 백엔드를 프로그래밍하는 방법 (0) | 2022.04.06 |
[BASH] dd 표준입력을 파일로 저장 (0) | 2022.04.06 |
ac_nonexistent.h: No such file or directory (0) | 2022.03.24 |
[SO 번역] MIME 타입에서 "vnd"는 무슨 의미인가? (0) | 2022.03.21 |