Ich habe ein Shell-Skript, das eine PDF-Datei als Argument verwendet und sie mit zusätzlichen druckerspezifischen Optionen druckt. Wie kann ich dieses Skript als virtuellen Drucker hinzufügen, der über die GUI ausgewählt werden kann?
Das Shell-Skript ist ein manuelles Duplex-Skript, das eine PDF-Datei erstellt, gerade Seiten druckt, einen Benutzer mithilfe von Zenity auffordert, die Seiten umzublättern, und dann die ungeraden Seiten druckt.
Mein aktueller Workflow ist:
- Datei -> Drucken -> In Datei speichern -> tmp.pdf
my_duplex_script tmp.pdf
rm tmp.pdf
Gibt es eine Möglichkeit, es so zu machen:
- Datei -> Drucken -> my_script_as_virtual_printer
Hinweis: Dies ist unter Linux Mint 13 Zimt. Ich habe es versucht, gnome-manual-duplex
aber es funktioniert nicht für mich.
Der GUI-Dialog, über den ich in eine PDF-Datei drucken kann
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
quelle
printcap
die Konfigurationsdatei für BSD lpr oder lprNG ist, nicht für CUPS, die heutzutage de facto der Standard ist, und der Standard für Mint.cups-bsd
Paket erwähnt, das auch auf Mint verfügbar ist, standardmäßig installiert ist und auch gut unterstützt wird.cups-bsd
ist nicht lprng! Es ist nur ein Wrapper, der die Funktionalität des BSD-Drucks für Tassen bietet, um Anwendungen zu unterstützen, dielpr
zum Drucken verwendet werden (dh xpdf).Spät zur Party, aber ich wollte das Gleiche tun und fand keine andere Lösung.
Ich werde hier schreiben, wie ich es gelöst habe, vielleicht finden andere die Lösung nützlich.
Der Quellcode befindet sich auf github: https://github.com/dentys03/manual_duplex_linux
Es sollte auf jedem HP Drucker funktionieren. Leicht für andere Drucker geeignet, denke ich.
quelle