PDF 파일을 인수로 사용하고 추가 프린터별 옵션을 사용하여 인쇄하는 쉘 스크립트가 있습니다. 이 스크립트를 GUI에서 선택할 수 있는 가상 프린터로 추가하려면 어떻게 해야 합니까?
쉘 스크립트는 PDF 파일을 가져와 짝수 페이지를 인쇄하고 zenity를 사용하여 사용자에게 페이지를 넘기라는 메시지를 표시한 다음 홀수 페이지를 인쇄하는 수동 양면 스크립트입니다.
내 현재 작업 흐름은 다음과 같습니다.
- 파일->인쇄->파일에 저장->tmp.pdf
my_duplex_script tmp.pdf
rm tmp.pdf
그것을 만드는 방법이 있습니까?
- 파일->인쇄->my_script_as_virtual_printer
참고: 이 작업은 Linux mint 13 cinnamon에서 수행되었습니다. 나는 그것을 시도했지만 gnome-manual-duplex
그것은 나에게 효과가 없습니다.
PDF 파일로 인쇄할 수 있는 GUI 대화 상자
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
답변1
나는 이것을 시도한 적이 없지만 다음과 같은 도구가 있습니다.tea4cups
인쇄를 수행하기 위해 스크립트에 프리훅을 구현할 수 있는 것 같습니다. 그런 다음 이 인쇄를 취소하고 컵이 실제로 실제 프린터로 가는 대신 스크립트가 인쇄되도록 허용할 수 있습니다.
발췌
가능성은 무궁무진합니다:
- CUPS에서는 동일한 작업을 여러 프린터에 동시에 보낼 수 없습니다.
- 모든 인쇄 작업을 자동으로 PDF로 보관합니다.
- 중복 인쇄 작업 억제(샘플 구성 파일에 간단한 예가 표시되어 있음)
- 15분만에 인쇄회계솔루션 만들기 (네, 맞습니다)
- 등...
Tea4cups는 다음과 같은 편의를 제공합니다.
Tea4CUPS는 명령을 시작하는 세 가지 방법을 제공합니다.
- 필터: 필터는 입력 데이터가 프린터로 전송되거나 아래 정의된 프리후크 및 포스트후크에서 사용되기 전에 입력 데이터를 수정할 수 있습니다. 현재 인쇄 대기열당 하나의 필터를 정의할 수 있습니다.
- prehooks: 인쇄 작업이 실제 프린터로 전송되기 전에 시작되도록 보장됩니다. -1을 종료하는 프리후크는 인쇄 작업을 취소할 수 있습니다. 특정 인쇄 대기열에 대해 원하는 만큼의 프리후크를 정의할 수 있습니다.
- posthooks: 작업이 이전에 prehook에 의해 취소되지 않는 한 인쇄 작업이 실제 프린터로 전송된 후에 시작이 보장됩니다. 특정 인쇄 대기열에 대해 원하는 수의 포스트후크를 정의할 수 있습니다.
답변2
이 스크립트를 GUI에서 선택할 수 있는 가상 프린터로 추가하려면 어떻게 해야 합니까?
가상 프린터를 추가하려면 /etc/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
일반적으로 기본 구성입니다.
답변3
파티에 늦었지만 똑같은 일을 하고 싶지만 다른 해결책을 찾지 못했습니다.
제가 어떻게 해결했는지 여기에 적어보겠습니다. 어쩌면 다른 사람이 이 솔루션이 유용하다고 생각할 수도 있습니다.
- 인쇄용 파일을 캡처하기 위한 머그 필터를 만들었습니다.
- 파일을 인쇄하기 위한 백엔드를 만들었습니다.
- 훌륭하고 간단한 설치 프로그램을 만들었습니다.
소스 코드는 github에 있습니다: https://github.com/dentys03/manual_duplex_linux
모든 HP 프린터에서 작동합니다. 다른 프린터에도 적응하기 쉬울 것 같아요.