Plugin para imprimir en impresora térmica usando navegador web y JavaScript

El título es totalmente correcto: en este post te mostraré a imprimir tickets, recibos o facturas en una impresora térmica usando JavaScript del lado del cliente incluso si tu página web o aplicación está en un servidor en la nube.

Como sabemos, imprimir un ticket con JavaScript es posible, pero difícil para el usuario final, pues tiene que seleccionar la impresora y confirmar la impresión.

Otra desventaja de imprimir con JavaScript sin plugin es que no podemos cortar el papel, abrir el cajón o cosas de esas.

Por eso es que he creado la solución al problema y vengo a exponerla. Y no, no es una broma ni un post engañoso.

Un plugin para impresoras térmicas usando JavaScript

Por todo ello es que he decidido crear un plugin para imprimir con JavaScript, sin ninguna dependencia y usando JavaScript puro.

Si quieres saltar a los ejemplos o a la descarga del plugin, ve al repositorio de GitHub o a la documentación.

Lo que viene a continuación son detalles técnicos de cómo funciona el plugin.

Sordid details following…

Funcionamiento

El funcionamiento es sencillo. El plugin, que es un ejecutable, crea un servidor web en el puerto 8080 (que solo vive mientras el plugin está ejecutándose) y escucha peticiones.

El plugin, a diferencia de JavaScript, sí puede interactuar con la computadora del usuario, así que basta con que le digamos qué hacer a través de HTTP.

JavaScript es realmente bueno haciendo peticiones HTTP a través de, por ejemplo, fetch.

Esquema de funcionamiento de plugin para impresora térmica

En el esquema anterior se ilustra de mejor manera.

Gracias a que el plugin habla HTTP, se puede imprimir un ticket desde prácticamente cualquier lenguaje de programación que se pueda comunicar con el plugin.

La librería

No todos los tickets son iguales, y por ello es que debí crear una forma de hacer que el usuario pueda imprimir y modificar tickets infinitos.

Para ello, hice un arreglo en donde se ponen las acciones. Dentro del plugin simplemente las interpreto y las mando a la impresora.

Las acciones son un objeto que tiene “accion” (como write) y los datos, que son los datos usados para la acción.

Se ve mejor ilustrado en esta clase:

Ambas cosas, acción y datos, son convertidos a cadena.

Todas esas acciones se van agregando a un arreglo; a través de los métodos que expone la clase Impresora:

Esta clase simplemente trata de validar un poco los datos, pero al final, lo que se manda en el método end es un arreglo de objetos.

Del lado del servidor eso también se valida, y eso es todo.

Cosas que faltan

Falta minificar la librería, detectar bugs, etcétera.

Recuerda que esto es una explicación técnica, los ejemplos puedes verlos en la documentación.

Plugin para imprimir en impresora térmica usando navegador web y JavaScript

Por parzibyte Tiempo de lectura: 2 min