Enviar DTE directo a impresora (sin abrir PDF)

Ahora es posible imprimir un DTE con sólo un click, sin tener que abrir el PDF ni seleccionar impresora ni menos tener que volver a hacer otro click para imprimir. Además podrás enviar a imprimir a impresoras térmicas usando el protocolo ESCPOS el que entregará una calidad superior a la de imprimir el PDF en la impresora térmica.

Enviar a imprimir directamente desde la aplicación web, y más aun, hacerlo enviando el código ESCPOS necesario para la impresora térmica no es algo que las aplicaciones web puedan hacer por si mismas. Se deben ayudar de algún programa externo. En nuestro caso lo hacemos enviando desde la aplicación web la solicitud de impresión a un servidor de WebSockets que se ejecuta localmente en el computador del usuario. De esta forma, es el websocket el que realmente envía a imprimir.

LibreDTE utiliza 2 websockets:

  • ws://localhost:2186/print/pdf
  • ws://localhost:2186/print/escpos

El primero envía a imprimir un PDF y el segundo envía a imprimir un código ESCPOS. En ambos casos el mensaje enviado al websocket son los datos comprimidos usando ZIP.

El websocket debe:

  1. Recibir la acción a realizar, que por ahora sólo es “print” pero se recomienda dejar esto controlado ya que en el futuro podrían haber más acciones.
  2. Determinar el formato en que se envían los datos: actualmente “pdf” y “escpos”.
  3. Descomprimir los datos usando ZIP.
  4. Enviar a imprimir el PDF o el código ESCPOS según corresponda.

Para la impresión, si se usa el PDF, se podría enviar a cualquier tipo de impresora, en cambio el código ESCPOS sólo debe ser enviado a impresoras térmicas compatibles con dicho formato.

Para tener la opción de “imprimir” disponible tanto en un DTE temporal (cotización) o un DTE real, se debe habilitar en la pestaña “Facturación” de la configuración de la empresa la opción “¿Impresión directa?”.

Servidor LibreDTE websocketd

LibreDTE provee un servidor de websockets en el cliente de escritorio, de esta forma ya viene un servidor listo para usar. Para poder usarlo se deberá instalar el cliente de escritorio, con todas sus dependencias. Una vez instalado sólo debe ejecutar el servidor de websockets.

El servidor de websockets incluido en el cliente de escritorio permite actualmente:

  • Imprimir un PDF en la impresora por defecto del sistema.
  • Imprimir en una impresora térmica en red usando ESCPOS.

Actualmente LibreDTE websocketd no permite imprimir en una impresora térmica bluetooth o una conectada localmente. Se modificará el servidor de websockets en el futuro para implementar esto o bien puedes contribuir con esto haciendo un fork del proyecto cliente y creando el pull request con el cambio 🙂

Recuerda que si eres cliente de SASCO SpA puedes solicitar soporte para configurar esto en https://libredte.cl/soporte

Agregar un comentario

Su dirección de correo no se hará público.