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
fuente
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.cups-bsd
paquete, que también está disponible en Mint, instalado de forma predeterminada y también es compatible.cups-bsd
no es lprng! Es solo una envoltura, que proporciona la funcionalidad de impresión BSD para tazas para admitir aplicaciones que se utilizanlpr
para imprimir (es decir, xpdf).Tarde a la fiesta, pero quería hacer lo mismo y no encontré ninguna otra solución.
Escribiré aquí cómo lo resolví, tal vez otros encuentren útil la solución.
el código fuente está en github: https://github.com/dentys03/manual_duplex_linux
Debería funcionar en cualquier impresora HP. Fácilmente adaptable para otras impresoras, supongo.
fuente