가능하다면 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