원시 대기열에 대한 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

관련 정보