Recibo impreso en impresora térmica con comandos ESC POS usando Node.js y JavaScript

Impresora térmica con Node.js

Hoy vamos a ver cómo imprimir tickets en una impresora térmica con Node.js usando JavaScript del lado del servidor. Me imagino que con esto se podrá imprimir usando express, Electron o cualquier otra cosa.

Recibo impreso en impresora térmica con comandos ESC POS usando Node.js y JavaScript
Recibo impreso en impresora térmica con comandos ESC POS usando Node.js y JavaScript

Toma en cuenta que esto imprimirá en el servidor y que funcionará perfectamente para sistemas locales, pero si vas a subirlo al servidor puede que quieras revisar cómo imprimir del lado del cliente así como ya expliqué el problema que tenemos con PHP.

Prueba el nuevo diseñador

En estos días he creado un nuevo diseñador web para impresoras térmicas. El diseñador te guiará en el proceso de instalar tu impresora, compartirla e instalar lo necesario para imprimir tus diseños. Pruébalo en:

https://parzibyte.me/apps/ticket-designer/#/first-steps

Una vez que tengas tus diseños vas a poder imprimirlos desde cualquier lenguaje de programación, incluyendo Python.

Importando conector

Como Node.js al final es JavaScript, podemos usar el conector JavaScript que ya existe para comunicarnos con la impresora POS.

Yo lo he tomado de: https://github.com/parzibyte/ejemplos-javascript-plugin-v3/blob/main/ConectorJavaScript.js

Recomiendo que utilices siempre la última versión visitando ese enlace, ya que si actualizo la librería podrás disfrutar de las últimas características. En mi caso lo dejé en la misma carpeta que mi index.js y lo he importado así:

Obteniendo lista de impresoras

Si quieres puedes obtener la lista de impresoras térmicas para mostrársela al usuario. Esto es totalmente opcional y solo en caso de que quieras mostrar la lista para que el usuario pueda seleccionar la impresora.

Diseñando ticket

Ahora veamos cómo diseñar un ticket o factura para imprimir en la impresora térmica. Recuerda que también puedes solo abrir el cajón de dinero o cortar el papel, no estás obligado a imprimir algo.

De cualquier modo veamos cómo imprimir un ticket en una impresora térmica desde Node.js además de cortar el papel y abrir el cajón de dinero en caso de que exista:

Si te preguntas, todos los métodos que puedes usar están en la documentación de:

Plugin para impresoras térmicas versión 3

Imprimir recibo en impresora térmica

Con lo anterior diseñamos el ticket. Ahora solo falta invocar a imprimirEn para que se imprima en la impresora que tú indiques según la variable nombreImpresora.

La impresión devuelve una promesa que al resolverse traerá la respuesta. Si la respuesta es true, entonces todo fue correcto. En caso de que no sea true, será una cadena con el mensaje de error. Se maneja así:

Con esto, solo es cuestión de ejecutar el archivo. Yo lo he ejecutado con node index.js pero porque es un ejemplo, obviamente tú puedes poner ese fragmento de código en donde tú prefieras.

Descarga del plugin

Lo presentado aquí es un conector para un plugin gratuito que he desarrollado. Este plugin permite imprimir en impresoras térmicas desde cualquier lenguaje de programación, por ello es que ahora escribí un conector para Node.js.

Entonces antes de usar el código aquí presente debes configurar tu impresora y descargar el plugin.

Para instalar tu impresora y compartirla: https://parzibyte.me/blog/2017/12/11/instalar-impresora-termica-generica/

Después descarga el plugin desde: https://github.com/parzibyte/plugin-impresora-termica-v3/releases/tag/3.2.1

Una vez que hayas hecho todos los pasos necesarios y que veas que el plugin funciona entonces puedes comenzar a imprimir desde Node.js.

Poniendo todo junto

Nota: he grabado un vídeo para complementar el post. Míralo aquí.

El código completo que obtiene la lista de impresoras y también imprime en una impresora térmica usando comandos ESC POS queda así:

Te dejo el repositorio completo en GitHub en caso de que haga actualizaciones en el futuro.

Próximos pasos

A partir de aquí puedes ver la documentación para ver cómo agregar cosas más complejas al ticket. Puedes imprimir caracteres personalizados, códigos QR, códigos de barras, imágenes locales, de internet, en base 64 y también usarla en distintos lenguajes de programación.

De nuevo te dejo con el post de presentación en donde encontrarás más detalles:

Plugin para impresoras térmicas versión 3

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario