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

El título es totalmente correcto: en este post te enseñaré 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.

English version here.

Características

El plugin presentado aquí permite imprimir texto, texto con acentos, imágenes, códigos de barras y QR, cambiar la alineación, tamaño de fuente, imprimir imágenes, cortar el papel, abrir el cajón y muchas cosas más.

Versión para Windows, Linux y Raspberry Pi

Si quieres imprimir un ticket en una impresora térmica desde JavaScript y la impresora térmica está conectada por USB entonces mira el siguiente post:

Eso te servirá para imprimir desde cualquiera de las 3 plataformas que mencioné anteriormente, además de que podrás usar varios lenguajes aparte de JavaScript (como Python, Java y cualquier otro que hable HTTP).

Versión móvil para tabletas y teléfonos Android

Si por el contrario tú tienes una impresora térmica pero conectada por Bluetooth entonces mira el plugin para Android, desde el cual podrás imprimir usando JavaScript y Java:

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

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.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

  • Hola buenos días estoy trabajando con la v1 y no encuentre el conector.exe de esta version para descargar podrias volverlo a subir. probe con la v3 y no me anda

    • Buenos días. El conector v3 y plugin v3 son los únicos disponibles por el momento.
      Saludos

  • Buenas tardes no puedo hacer jalar que me muestre las impresoras. Ya trabajaba con la versión 2 y todo muy bien. El error está aquí:
    if (ruta) ConectorPlugin.URL_PLUGIN_POR_DEFECTO = ruta;
    const response = await fetch(ConectorPlugin.URL_PLUGIN_POR_DEFECTO + "/impresoras")
    La ruta es de donde está instalado el plugin? No corre desde el lado del usuario como la versión 2?

  • Es una lastima, intento imprimir desde una aplicacion hta, y aunque con java puro la impresion funciona bien en los navegadores, en hta no funciona bien, me ilusiono esta solucion, porque la versión 1 tiene ejemplos sobre ie-11 que es posible que funcionen en hta, pero ni la version 1 ni la version 2 funcionan para mi impresora en htlm, parece que imprime y no da error, pero al rato de espera sin obtener ningun caracter escrito dan error de comunicación en el driver de la impresora. La impresora no es de tiquets, es de etiquetas con papel continuo. Brother QL-700

    • El plugin (como el título lo dice) es para impresoras térmicas, no de etiquetas.
      Saludos!

  • Buenas, al comprar el premium que ventajas tengo? y por donde puedo hacer la compra?

    Muchas gracias.

  • Hola. Sigo probando tu plugin y necesitaria abrir el cajón de monedas. (tengo uno para probarlo).
    ¿podrias por favor dejarme un código de ejemplo, para probar?

    Probe con impresora.pulse();, pero pulse no aparece como function

  • Estimado.

    Tu código esta muy genial y lo he estado probando con la impresora térmica EPSON, pero lo que no he podido lograr es poder enviar el comando de corte, tu has podido realizar el corte con estas impresoras?.

    Agradeceria enormemente tu ayuda.

  • Hola. Estoy practicando con tu plugin, con el software que adjuntas, puedo hacer pruebas correstas, pero en el apartado "Imprimir indicando nombre de la impresora", no me imprime y consola me saca estos errores. ¿ como se solucionan?

    -Solicitud desde otro origen bloqueada: la política de mismo origen impide leer el recurso remoto en http://localhost:8000/imprimir_en (razón: falta la cabecera CORS 'Access-Control-Allow-Origin').
    -Uncaught (in promise) TypeError: NetworkError when attempting to fetch resource.

  • Hola. Tengo un par de dudas:
    1-Es compatible el plugin con una impresora wifi? o solo funciona con impresoras conectadas por cable?
    2-Si compro la version premium, es posible que me liberes el source code completo del plugin?
    3-Quiero usar varias impresoras, todas de la misma marca y modelo, funcionaria el plugin con todas o solo con la que esta como predeterminada?

    • Hola. A continuación respondo sus dudas:
      1- Solo por cable
      2- No, no es posible
      3- La librería ofrece el método "imprimirEnImpresora" por lo que usted podría imprimir en cualquier impresora especificando el nombre, siempre y cuando la impresora funcione correctamente
      Saludos :)

  • Hola, hay posibilidad de crear solo los estilos para utilizarlos en Web Apps o aplicaciones desde un celular con impresoras térmicas portátiles?

    Por ejemplo para una app sencilla realizada en React y que debe imprimir desde el celular.

    La conexión de la impresora portátil se realiza por bluetooth con la mayoría de aplicaciones que hay en la app store y los celulares la reconocen sin problemas, pueden imprimir cualquier cosa, incluso un pdf o cualquier web (aunque se ve muy pequeño).

    El inconveniente es el formato final, como se podrían crear estilos para dar formato a la impresión de una factura creada en la pagina web?

    Gracias y saludos.

Entradas recientes

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

16 horas hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

1 semana hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

1 semana hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

1 semana hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

1 semana hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

1 semana hace

Esta web usa cookies.