Tengo un script de shell que toma un archivo PDF como argumento y lo imprime con opciones adicionales de impresora específicas. ¿Cómo puedo agregar este script como una impresora virtual que se puede seleccionar desde la GUI?
La secuencia de comandos de shell es una secuencia de comandos dúplex manual que toma un archivo PDF, imprime páginas pares, le da un aviso al usuario usando zenity pidiéndole que voltee las páginas y luego imprima las páginas impares.
Mi flujo de trabajo actual es:
- Archivo -> Imprimir -> Guardar en archivo -> tmp.pdf
my_duplex_script tmp.pdf
rm tmp.pdf
¿Hay alguna manera de hacerlo como:
- Archivo -> Imprimir -> my_script_as_virtual_printer
Nota: Esto está en Linux mint 13 canela. Lo he intentado gnome-manual-duplex
pero no me funciona.
El cuadro de diálogo GUI desde el que puedo imprimir en un archivo 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
es el archivo de configuración para BSD lpr o lprNG, no para CUPS, que es el estándar de facto en la actualidad y es el estándar en Mint.