
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 프린터에서 작동합니다. 다른 프린터에도 쉽게 적용할 수 있을 것 같습니다.