
가능한 경우 CUPS에서 원시 대기열에 대한 필터를 추가하는 방법을 알아내는 데 문제가 있습니다.
기본적으로 내가 해야 할 일은 TIFF를 원시 대기열로 보내기 전에 PS로 변환하는 것입니다. 프린터에는 TIFF 지원 기능이 내장되어 있지 않으므로 출력물이 정크입니다.
프린터 설정을 원시 대기열로 유지해야 하며 필터링을 위해 동일한 프린터에 대해 두 번째 인쇄 대기열을 추가할 수 없습니다.
어쨌든 TIFF 파일(단일 프린터의 경우 바람직함)을 캡처하여 원시로 보내기 전에 PS로 변환할 수 있습니까?
이것이 원시 애플리케이션의 mime.convs에서 수행할 수 있는 작업입니까?
답변1
나는 이것에 대한 해결책을 찾았습니다. 기본적으로 저는 사용자 정의 백엔드가 있는 새 프린터를 만들고 있는데, 이를 통해 수신 데이터를 다시 보내기 전에 조작할 수 있습니다. 그래서 래퍼 역할을 하는 프린터 한 대가 있는데, 이 프린터는 데이터를 수신하고 이미지를 변환한 다음 이를 실제 프린터로 보냅니다.
이를 달성하기 위해 다음을 제공하는 openSUSE RPM 패키지가 있습니다.CUPS 파이프 백엔드CentOS와 함께 사용할 수 있습니다. 이 백엔드는 명령줄 파이프처럼 사용됩니다.
위의 RPM을 다운로드하고 파이프 스크립트를 추출했습니다. 이 스크립트는 복사되어 /usr/lib/cups/backend/pipe
실행 가능해졌습니다.
그런 다음 프린터 URI의 프린터 옵션을 포함하여 전달된 인쇄 정보를 가져오는 작은 스크립트를 작성했습니다. 이 스크립트는 필요한 경우 이미지 변환(이 작업의 경우 TIFF를 PDF로)을 수행한 다음 이를 실제 프린터로 보냅니다.
#!/bin/bash
FILE=${PIPE_BACKEND_ARGV6}
MIME_TYPE=$(file --mime-type "${FILE}" | awk '{print $2}')
if [[ $MIME_TYPE == *tiff ]]
then
tiff2pdf -o /tmp/printConv-$$.pdf "$FILE"
FILE=/tmp/printConv-$$.pdf
CONV=1
fi
lpr -P "$1" "${FILE}"
if [[ $CONV -eq 1 ]]
then
rm "${FILE}"
fi
그런 다음 다음 URI 구문을 사용하여 "래퍼" 프린터를 설정했습니다.
pipe:/path/to/cups-wrapper-script?actualPrinterName
여기서는 파이프 백엔드가 사용됩니다. 작업을 보낼 실제 프린터를 스크립트에 알려주는 데 사용되는 /path/to/cups-wrapper-script
인수를 사용하여 에서 스크립트를 호출합니다 .actualPrinterName