Ho uno script di shell che prende un file PDF come argomento e lo stampa con ulteriori opzioni specifiche della stampante. Come posso aggiungere questo script come una stampante virtuale che può essere selezionata dalla GUI?
Lo script di shell è uno script duplex manuale che prende un file PDF, stampa pagine pari, dà un prompt all'utente usando zenity chiedendo all'utente di capovolgere le pagine e quindi stampare le pagine dispari.
Il mio flusso di lavoro attuale è:
- File -> Stampa -> Salva su file -> tmp.pdf
my_duplex_script tmp.pdf
rm tmp.pdf
C'è un modo per farlo come:
- File -> Stampa -> my_script_as_virtual_printer
Nota: questo è su Linux alla menta 13 cannella. Ho provato gnome-manual-duplex
ma non funziona per me.
La finestra di dialogo della GUI da cui posso stampare su un file 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
è il file di configurazione per BSD lpr o lprNG, non per CUPS che è lo standard di fatto al giorno d'oggi, ed è lo standard su Mint.