쉘 스크립트를 가상 프린터로 사용


10

PDF 파일을 인수로 사용하여 추가 프린터 특정 옵션으로 인쇄하는 쉘 스크립트가 있습니다. 이 스크립트를 GUI에서 선택할 수있는 가상 프린터로 추가하려면 어떻게해야합니까?

쉘 스크립트는 PDF 파일을 가져와 짝수 페이지를 인쇄하며 사용자에게 페이지를 넘기도록 요청하는 zenity를 사용하여 홀수 페이지를 인쇄하는 수동 양면 인쇄 스크립트입니다.

현재 진행중인 작업 과정은 다음과 같습니다.

  1. 파일-> 인쇄-> 파일로 저장-> tmp.pdf
  2. my_duplex_script tmp.pdf
  3. rm tmp.pdf

다음과 같이 만들 수있는 방법이 있습니까?

  1. 파일-> 인쇄-> my_script_as_virtual_printer

참고 : 이것은 Linux mint 13 계피에 있습니다. 시도 gnome-manual-duplex했지만 작동하지 않습니다.


PDF 파일로 인쇄 할 수있는 GUI 대화 상자 표준 GTK 인쇄 대화 상자

my_duplex_script

#!/bin/bash

lp_args=
while getopts o: opt
do
    case "$opt" in
        o)  lp_args="$lp_args -o $OPTARG" ;;
        \?) echo >&2 Invalid argument; exit 1 ;;
    esac
done
shift `expr $OPTIND - 1`

file=$1
page_count=$(pdfinfo "$file" | grep Pages | awk '{print $2}')
is_odd=`expr $page_count % 2`

if [ $is_odd -eq 1 ]
then
    #outputting blank
    echo | lp -s -t "$file"-blank
fi

#printing even reversed
lp -s -o page-set=even -o outputorder=reverse $lp_args -t "$file"-even "$file"

if zenity --question --text="Flip and reinsert the entire stack when printing has finished." --ok-label="Proceed" --cancel-label="Cancel"
then
    #printing odd reversed
    lp -s -o page-set=odd -o outputorder=reverse $lp_args -t "$file"-odd "$file"
else
    echo >&2 User abort
    exit 1
fi

exit 0

답변:


2

나는 이것을 시도한 적이 없지만 tea4cups인쇄를 할 스크립트에 프리 훅을 구현할 수있는 것처럼 들리는 도구 가 있습니다. 그런 다음이 인쇄를 취소하고 실제로 컵을 통해 실제 프린터로 가지 않도록하여 스크립트 대신 인쇄를 수행 할 수 있습니다.

발췌

가능성은 끝이 없습니다 :

  • CUPS로는 불가능한 동일한 작업을 동시에 여러 프린터로 전송하십시오.
  • 모든 인쇄 작업의 PDF 보관을 자동화합니다.
  • 중복 인쇄 작업 금지 (샘플 구성 파일에 간단한 예가 표시됨)
  • 15 분 안에 인쇄 회계 솔루션을 만듭니다 (예,이 것은 실제입니다)
  • 기타...

Tea4cups는 다음과 같은 기능을 제공합니다.

Tea4CUPS는 명령을 시작하는 세 가지 방법을 제공합니다.

  • 필터 : 필터는 입력 데이터가 프린터로 전송되거나 아래 정의 된 사전 및 사후 후크에 제공되기 전에 입력 데이터를 수정할 수 있습니다. 현재 인쇄 대기열마다 단일 필터를 정의 할 수 있습니다.
  • 프리 훅 : 인쇄 작업이 실제 프린터로 전송되기 전에 시작됩니다. -1을 종료하는 프리 훅은 인쇄 작업을 취소 할 수 있습니다. 특정 인쇄 대기열에 대해 원하는 수의 프리 훅을 정의 할 수 있습니다.
  • posthooks : 사전 후크에 의해 이전에 작업이 취소되지 않은 경우 인쇄 작업이 실제 프린터로 전송 된 후에 시작됩니다. 특정 인쇄 대기열에 대해 원하는 수의 포스트 후크를 정의 할 수 있습니다.

2

이 스크립트를 GUI에서 선택할 수있는 가상 프린터로 추가하려면 어떻게해야합니까?

가상 프린터를 광고하려면을 편집하십시오 /etc/printcap. PRINTCAP 의 구문에 익숙해 져야 하기 때문에 이는 쉽지 않습니다 .

이를 수행하는 방법의 예는 다음 같습니다. Samba를 사용한 PDF 서비스 :

# /etc/printcap
# PDF Service entry

lp|pdf|PDF Printer:\
        :lp=/dev/null:sh:\
        :sd=/var/spool/lpd/pdf:\
        :af=/var/spool/lpd/pdf/acct:\
        :mx#0:sh:\
        :if=/usr/bin/smbprint:

여기서 /usr/bin/smbprint스크립트는 인쇄 필터로 사용됩니다. 프린터 자체는 /dev/null입니다.

아마도 설치해야 cups-bsd하지만 종종 기본 구성입니다.


주의 printcap하지 요즘 사실상의 표준이다 CUPS를 들어, BSD의 LPR 또는 만들어라에 대한 구성 파일, 그리고 민트의 표준입니다.
Gilles 'SO- 악마 그만해'

따라서 cups-bsdMint에서도 사용 가능한 패키지가 기본적으로 설치되어 있고 잘 지원된다고 언급했습니다 . cups-bsdlprng가 아닙니다! 인쇄용으로 사용되는 응용 프로그램 lpr(예 : xpdf) 을 지원하기 위해 컵용 BSD 인쇄 기능을 제공하는 래퍼 일뿐 입니다.

0

파티에 늦었지만 같은 일을하고 싶었고 다른 해결책을 찾지 못했습니다.

내가 어떻게 그것을 해결했는지 여기에 쓸 것입니다. 아마도 다른 사람들이 솔루션을 유용하게 사용할 수 있습니다.

  • 인쇄 할 파일을 잡기 위해 컵용 필터를 만들었습니다.
  • 파일을 인쇄하기 위해 백엔드를 만들었습니다.
  • 멋지고 쉬운 설치 프로그램을 만들었습니다.

소스 코드는 github에 있습니다 : https://github.com/dentys03/manual_duplex_linux

모든 HP 프린터에서 작동해야합니다. 다른 프린터에 쉽게 적응할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.