Saltar al contenido

Impresión de recibo desde la aplicación web Django

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:
    1. Abrir sobre:config
    2. Crea un nuevo valor booleano llamado print.always_print_silent y configúralo en True
    3. Crea un nuevo valor booleano llamado print.show_print_progress y configúralo en False
  • 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:

  1. Tienes más clientes que impresoras (poco dinero o impresoras defectuosas)
  2. Más impresoras que clientes (diferentes impresoras o colores de papel para diferentes necesidades)
  3. Clientes que no pueden imprimir directamente (PDA/smartphones)
  4. Quiere saber el estado de la impresora

Cómo hacer

  1. Conectar impresoras (a los clientes y/o al servidor)
  2. Comparta impresoras conectadas a clientes a través de la red
  3. 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).

PDF

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *