ฉันมีเชลล์สคริปต์ที่ใช้ไฟล์ 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
แต่ใช้ไม่ได้สำหรับฉัน
กล่องโต้ตอบ GUI ซึ่งฉันสามารถพิมพ์เป็นไฟล์ PDF ได้
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
printcap
เป็นไฟล์การกำหนดค่าสำหรับ BSD lpr หรือ lprNG ไม่ใช่สำหรับ CUPS ซึ่งเป็นมาตรฐานแบบพฤตินัยทุกวันนี้และเป็นมาตรฐานใน Mint