Te sugerimos que pruebes esta respuesta en un ambiente controlado antes de enviarlo a producción, un saludo.
Solución:
Veo dos formas de lograrlo:
Primer método – Configura tu navegador
notas
Buena solución si tiene una impresora para cada cliente (porque solo puede usar la impresora predeterminada). Tenga en cuenta que puede eliminar su servidor de impresión (útil para dispositivos con recursos muy limitados) creando un script que el navegador debería ejecutar automáticamente para abrir su archivo. Puedes usar algo como esto:
#!/bin/bash
printer="/dev/usb/lp0"
encoding_needed=true #false
if $encoding_needed; then
iconv -c -t 437 $1 > $printer
else
cat $1 > $printer
fi
Firefox
- Configuración manual:
- Abrir sobre:config
- Crea un nuevo valor booleano llamado
print.always_print_silent
y configúralo enTrue
- Crea un nuevo valor booleano llamado
print.show_print_progress
y configúralo enFalse
- Use una extensión, como: https://addons.mozilla.org/en-us/firefox/addon/attendprint/
Ten en cuenta que existen otras extensiones para hacer quioscos, por ejemplo:
- https://addons.mozilla.org/en-us/firefox/addon/r-kiosk/
- https://addons.mozilla.org/en-us/firefox/addon/mkiosk/
Cromo
Puede iniciarlo con estas opciones: --kiosk --kiosk-printing
explorador de Internet
Para el modo de quiosco, consulte: http://support.microsoft.com/kb/154780
Segundo método: el servidor maneja todas las impresoras
notas
Buena solución si:
- Tienes más clientes que impresoras (poco dinero o impresoras defectuosas)
- Más impresoras que clientes (diferentes impresoras o colores de papel para diferentes necesidades)
- Clientes que no pueden imprimir directamente (PDA/smartphones)
- Quiere saber el estado de la impresora
Cómo hacer
- Conectar impresoras (a los clientes y/o al servidor)
- Comparta impresoras conectadas a clientes a través de la red
- Administre todas las impresoras desde su servidor Django
Dos opciones aquí: imprimir una página html o proporcionar un archivo PDF.
Nota: inicialmente no estaba claro que las impresiones deberían ser automáticas, lo que significa que la respuesta no es directamente útil para OP.
HTML + “Imprimirme”
Muestre el recibo como una página html, luego cree un media="print"
Hoja de estilo CSS que utilizará el navegador al imprimir el recibo. Hay mucho que decir acerca de las hojas de estilo de impresión CSS, pero lo importante es que debe eliminar todos los elementos de navegación e imágenes que van a ser costosos de imprimir.
Cuando haga esto, el usuario simplemente tendrá que imprimir la página él mismo. También puede agregar un botón “Imprimirme” que le mostrará a su usuario un cuadro de diálogo de impresora. Esto se hace a través de JavaScript:
Print this page
(Esto es un poco molesto para sus clientes que no tienen JS, consulte este tutorial sobre la impresión de JS para una mejor manera).
Genere un PDF en Django y muéstreselo al usuario. Tendrá la libertad de imprimirlo o guardarlo en su computadora más tarde. La mayoría de los sitios web hacen esto porque es mucho más fácil controlar el diseño de un archivo PDF y será más fácil hacer que parezca un recibo real.
- XSL-FO puede ayudarlo a hacer esto (traduce un XML a un PDF con una “hoja de estilo”).
- Parece que se explica una forma más pitónica en los documentos de Django.
- Las páginas anteriores enumeran alternativas como xhtml2pdf (Pisa) que parece usarse mucho en StackOverflow
Si usa raw/esc/p, pruebe jzebra en el código de Google.
Si eres capaz, eres capaz de dejar un artículo acerca de qué te ha parecido esta crónica.