En este post te mostraré un plugin gratuito que te va a permitir imprimir en impresoras térmicas desde Android.
La aplicación (APK) que te enseñaré sirve como puente entre el programador y una impresora térmica conectada por Bluetooth para enviar comandos ESC POS, además de que es una app gratuita.
Con lo presentado aquí vas a poder imprimir texto, códigos QR, códigos de barras, imágenes locales, de internet o en base 64 además de otras opciones como avanzar el papel, invertir el fondo, rotar el texto, cambiar la fuente, alinear y todo lo que sea posible con comandos ESC POS de las Thermal printers.
Además, vas a poder consumir el plugin desde cualquier lenguaje de programación, pues la app que te enseño hace todo el trabajo por ti, tú solo le indicas lo que quieres imprimir desde Android de manera inalámbrica.
Diseñador para impresoras térmicas
Acabo de crear un diseñador de recibos para impresoras térmicas en donde podrás diseñar tickets ESC POS, importar, exportar, generar el código para varios lenguajes de programación y revisar una guía paso a paso para descargar, instalar y usar el plugin. Pruébalo en: https://parzibyte.me/apps/ticket-designer/#/first-steps
Funcionamiento del plugin
El plugin es, al final del día, una aplicación que deberás instalar en los teléfonos y/o tabletas en donde vayas a imprimir en impresoras térmicas. Además, el mismo debe ejecutarse en segundo plano siempre.
La app va a iniciar un servidor HTTP y va a escuchar peticiones. Cuando reciba una petición (creada a través de un conector) va a interpretarla y después va a “reenviarla” a la impresora térmica a través de Bluetooth.
Entonces tú puedes imprimir desde cualquier lugar que hable HTTP, por ejemplo, JavaScript desde el navegador web y también desde otras apps programadas con Java, Kotlin o Dart (usando Flutter).
El esquema queda así:
Cualquier cosa que hable HTTP -> Plugin -> Impresora térmica bluetooth.
Incluso podrías imprimir a través de la red usando cualquier otro lenguaje de programación. Las posibilidades son infinitas, pues mientras sepas cómo hablarle a la API expuesta por el plugin vas a poder imprimir desde cualquier lugar.
Nota importante: el plugin siempre debe estar en ejecución. Asegúrate de darle todos los permisos y deshabilitar el ahorro de energía o cosas similares (en mi Xiaomi debí elegir Sin restricciones en Ahorro de batería).
Descargar plugin
Es verdad que el plugin es totalmente gratuito y lo puedes usar sin límite. Para descargarlo ve a la siguiente página en el apartado de releases y descarga el APK: https://github.com/parzibyte/plugin-impresora-termica-bt-android/releases/latest
Desde ahora te digo que la app no es maliciosa y que los permisos que necesita están justificados para el debido funcionamiento del plugin, pero si no tienes confianza simplemente no la instales y no pasa nada.
El plugin para Android e impresoras térmicas BT debería funcionar a partir de la versión 4.4 de Android y superiores pero el dispositivo más antiguo que pude conseguir fue uno con Android 6.0.1 y el más reciente con Android 12.
Imprimir ticket en impresora térmica desde Android
Aquí hay un vídeo explicativo: https://www.youtube.com/watch?v=NgVwmZrFNZo
Una vez que lo hayas instalado y dado permisos abre el plugin, debería mostrarte que ha iniciado el servidor correctamente y que tiene todos los permisos. Si no le das permisos entonces no va a iniciar el servidor y no podrás usarlo.
En caso de que todo vaya bien se verá algo así:
Ahora vamos a realizar una prueba. Asegúrate de que para este paso ya hayas emparejado tu dispositivo con la impresora y que tengas activado el Bluetooth.
Haz clic en Ver impresoras disponibles y espera a que la lista cargue. Localiza tu impresora y haz clic en Probar (yo he borrado la MAC de la captura pero mi impresora es la MTP-II):
Debería imprimirse un ticket como el siguiente:
Y si has llegado hasta ese paso, felicidades, ahora ya puedes usar el plugin para crear tus propios tickets e imprimir lo que tú quieras desde cualquier lugar. Lo que ves arriba es solo una prueba.
Próximos pasos
Ahora ya puedes usar el plugin (recuerda que debe ejecutarse en segundo plano siempre) desde cualquier lenguaje.
Actualmente existe el conector para JavaScript (así puedes imprimir desde el navegador):
https://parzibyte.me/blog/2022/11/01/imprimir-ticket-impresora-termica-bluetooth-javascript-android/
Y el de Android con Java:
https://parzibyte.me/blog/2022/11/01/imprimir-impresora-termica-android-java/
Con la documentación del plugin puedes crear tu propio conector para consumirlo o contratarme para escribir un conector para tu plataforma favorita: https://parzibyte.me/#contacto
Licencias
El plugin es totalmente gratuito y no hay límite de nada: ni en impresión de tickets, longitud de datos ni lenguaje de programación desde donde lo consumas, pero siempre aparecerá un pie de página con mis créditos.
Si quieres remover el pie de página por favor lee el siguiente post en donde documento los detalles para obtener una licencia de uso:
https://parzibyte.me/blog/2022/11/02/obtener-licencia-plugin-impresoras-termicas-bluetooth-android/
Documentación del plugin
La documentación del plugin la encuentras en el siguiente enlace, ahí se profundiza más en los detalles:
https://parzibyte.me/blog/2022/11/01/documentacion-plugin-impresoras-termicas-bluetooth-android/
Saludos amigos cuando imprimo. el pie de pagina que le tienes no se termina de imprimir en este caso el QR y cuando voy a imprimir de nuevo se daña la impresión. hay algo en el código que permita imprimir completo el pie de pagina?
Hola. Creo que no entendí correctamente su pregunta, pero siempre puede invocar a “Iniciar” al inicio de sus impresiones para limpiar el búfer y reiniciar los estilos.
saludos excelente trabajo. yo logro que imprimiera el detalle que tengo es el siguiente. mando a imprimir y sale perfecto todo, luego mando a imprimir de nuevo y salen garabatos que puede ser? porque luego vuelvo a mandar a imprimir y sale bien.
Hola. Tal vez es necesario invocar a “Iniciar” antes de empezar la impresión; la operación “Iniciar” limpia el búfer y reinicia los estilos
Hola que tal. Esta muy genial el plugin que tienes. Revise toda tu información y me parece un trabajo estupendo.
Trato de conectar una miniprinter 3nStar ppt305bt, pero no sale texto, solo la imagen y los códigos qr, junto con @ #. ¿Sera codificación?
Hola. Puede deberse a varias cosas, pero si al menos las imágenes aparecen, entonces el texto debería funcionar sin problemas. Ahí ya sería cuestión de revisar el manual o protocolos de su impresora en cuestión. Si necesita ayuda adicional estaré encantado de ayudarle en https://parzibyte.me/#contacto
Muchas gracias por compartir el plugin.
Lo he probado con una DATECS DPP350C (ESC/POS) y me sale el mensaje “Impreso correctamente” però no imprime nada.
He instalado esta impresora en windows y bluettoth (con los drivers) y si que me imprime.
¿Aguna sugerencia?
Hola, buen día. Tal vez el plugin no es compatible con su impresora. Recomiendo revisar de nuevo activando el Bluetooth, otorgando todos los permisos, revisando la impresora y comprobando si realmente se realiza la conexión (en algunas impresoras el led de estado cambia).
Hola! Muchas gracias por tu plugin… la verdad te leí con ilusión, pero la realidad es que no me dejó instalarla mi celular. Y mi problema persiste, resulta que esta impresora la adquirí para imprimir desde una versión del ERP Odoo que no reconoce la impresora directamente y había usado RawBT, pero sólo la uso de paso, desde el ERP mando a imprimir… la cuestión es que el RawBT pide membresía y pensé que con tu plugin lo solucionaría, pero no funcionó. ¿Tienes alguna sugerencia para esto? en Odoo me pide la IP de la impresora y no la he encontrado por ninguna parte.
Realmente te lo agradecería cantidad me pudieras ayudar con este tema.
Hola. ¿Cuál es el modelo de su impresora?
Hola, quiero consultarte. El plugin es compatible con una impresora. IMP034?
El plugin es gratuito, le invito a probarlo con su impresora.