원시 대기열용 CUPS 필터

원시 대기열용 CUPS 필터

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

관련 정보