En este post te voy a enseñar a imprimir en una impresora térmica usando JavaScript del lado del cliente, evitando confirmación por parte del usuario, gracias a un plugin.

English version here.

Y también he desarrollado un plugin para Android, míralo aquí:

https://parzibyte.me/blog/posts/plugin-gratuito-impresoras-termicas-bluetooth-android/

Yo recomiendo la versión 3 y final, pero si quieres puedes ver las otras versiones igualmente.

Demostración en YouTube

¿Quieres ver el plugin en funcionamiento? he grabado el siguiente vídeo en donde se muestra cómo descargar el plugin, configurar la impresora, establecerla y usar los ejemplos.

También resuelvo algunas preguntas comunes. Por favor, míralo:

Imprimir en impresora térmica con JavaScript

Veamos el código de JS para imprimir en una POS printer o thermal printer con JS.

Lo único que tienes que hacer es enviar una lista de operaciones que serán convertidas a operaciones ESC POS. Todo esto de manera silenciosa y sin cuadros de confirmación.

Veamos un ejemplo para iniciar la impresora al estado en el que estaba cuando se encendió y luego escribir un hola mundo escribiendo texto:

const listaDeOperaciones = [
    {
        "nombre": "Iniciar",
        "argumentos": []
    },
    {
        "nombre": "EscribirTexto",
        "argumentos": [
            "Hola impresora\n"
        ]
    }
];
const respuesta = await fetch("http://localhost:8000/imprimir",
    {
        method: "POST",
        body: JSON.stringify({
            "serial": "",
            "nombreImpresora": "Aquí va el nombre de tu impresora",
            "operaciones": listaDeOperaciones
        }),
    });

Es así de simple, solo tienes que enviar la lista de operaciones que serán convertidas a ESC POS en el endpoint del plugin que permite imprimir.

Esto solo es un hola mundo, pero puedes imprimir imágenes, códigos QR, códigos de barras, cambiar el estilo del texto e incluso imprimir HTML convertido a imagen. La lista completa de operaciones está en la documentación oficial:

https://parzibyte.me/http-esc-pos-desktop-docs/es/

Nota sobre async y await

Los ejemplos usan la palabra reservada await. Para que await funcione, necesitas estar dentro de una función definida con async. Por ejemplo:

const demostrarImpresion = async()=>{
  // Aquí ya puedes usar await
}

No tiene que ver con el consumo de la API ni la impresora térmica, es una característica del lenguaje, pero lo aclaro por si tienes problemas usando await en tus ejemplos.

Configurando impresora y descargar servidor HTTP

Para que el código funcione necesitas el servidor local ejecutándose y que tu impresora esté compartida. Por favor, sigue los pasos que aparecen en la página previamente enlazada, ya que ahí está la API unificada.

La documentación completa está en: https://parzibyte.me/http-esc-pos-desktop-docs/es/

Más sobre esta librería

Puedes ver más conectores y modos de uso en:

https://parzibyte.me/blog/posts/plugin-impresoras-termicas-version-3/

Así como la documentación oficial:

https://parzibyte.me/http-esc-pos-desktop-docs/es/

Versión para Linux y Raspberry Pi

El plugin también es compatible con distribuciones basadas en Debian y Raspbian. Puedes descargarlo como se indica en:

https://parzibyte.me/blog/posts/plugin-impresoras-termicas-version-3/

Para Android

Igualmente ya existe la versión para Android, míralo aquí:

https://parzibyte.me/blog/posts/plugin-gratuito-impresoras-termicas-bluetooth-android/

Si el post ha sido de tu agrado te invito a que me sigas para saber cuando haya escrito un nuevo post, haya actualizado algún sistema o publicado un nuevo software. Facebook | X | Instagram | Telegram | También estoy a tus órdenes para cualquier contratación en mi página de contacto