Blog de conocimiento gratuito: linux, programación, open source, bases de datos, android, frameworks, web e informática en general.
En este post vamos a ver cómo comunicar Java con una impresora térmica para imprimir imágenes, códigos QR, códigos de barra, texto, texto con acentos y darle estilo a los tickets desde ese lenguaje de programación.
Al final podrás usar NetBeans, IntelliJ IDEA, VSCode o cualquier editor en donde programes en Java para imprimir tickets en una impresora térmica.
Con el código mostrado aquí vas a ser capaz de imprimir recibos en una impresora térmica con Java ya sea desde la terminal, con Swing, en SpringBoot o cualquier cosa que programes con Java.
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 en Java.
Entonces antes de usar el código aquí presente debes configurar tu impresora y descargar el plugin como se indica en el siguiente post:
https://parzibyte.me/blog/2022/09/30/plugin-impresoras-termicas-version-3/
Una vez que hayas hecho todos los pasos necesarios y que veas que el plugin funciona entonces puedes comenzar a imprimir desde Java.
Vamos a necesitar algunas clases programadas por mí para la interacción con el plugin de impresión térmica y comandos ESC POS. Puedes ver las clases en: https://github.com/parzibyte/ConectorJavaPluginV3 (dentro de la carpeta src/main/java/parzibyte/conectorpluginv3
)
Las clases son:
Es tu responsabilidad importar las clases, ya sea copiando los archivos o el código.
También vas a necesitar la dependencia jackson-jr que sirve para convertir a JSON desde Java.
La inclusión depende de tu IDE y entorno, pero yo he usado Maven con NetBeans y solo ha sido cuestión de agregar la siguiente dependencia a mi archivo pom.xml
:
De hecho en el repositorio de las clases necesarias está un ejemplo de uso del plugin y también el pom.xml
.
Si quieres darle al usuario la posibilidad de elegir su impresora de una lista o quieres mostrar las impresoras compartidas entonces el conector ya cuenta con un método:
Solo debes invocar a ConectorPluginV3.obtenerImpresoras
, mismo que es un método estático y que devuelve un arreglo de tipo String.
Nota: recuerda que el método acepta la URL del plugin como parámetro opcional, esto es en caso de que ejecutes el plugin en un puerto distinto al original. Para más información, lee la documentación oficial:
https://parzibyte.me/blog/2022/09/30/plugin-impresoras-termicas-version-3/
Obtener la lista de impresoras es necesario en algunos casos, ya que el programador debe saber el nombre de la impresora al momento de imprimir un ticket.
Ahora sí vamos a lo que vinimos: la impresión de un ticket con Java. Una vez que tenemos las clases y el nombre de la impresora procedemos a crear una instancia del conector:
ConectorPluginV3 conectorPluginV3 = new ConectorPluginV3();
Y ahora ya podemos invocar a todos los métodos como el método que descarga una imagen y la imprime en la thermal printer, alinea texto, etcétera. Veamos un ejemplo completo:
Después de diseñar tu ticket debes invocar a imprimirEn
pasándole el nombre de la impresora térmica.
Ese método devuelve un booleano indicando el éxito de la operación, o lanza una excepción. La salida ya la has visto, es la imagen que acompaña al encabezado.
Nota: te lo digo de nuevo, el constructor acepta una URL como parámetro opcional. Esa URL debe apuntar al lugar donde escucha el plugin en caso de que hayas cambiado el puerto como se indica en:
https://parzibyte.me/blog/2022/09/30/plugin-impresoras-termicas-version-3/
Ahora ya puedes enviar recibos a impresoras térmicas desde Java de una manera muy fácil.
En resumen debes importar las clases y agregar la dependencia de jackson-jr para después crear una instancia del conector e imprimir.
El código completo junto con la demostración está en GitHub.
Y la documentación así como los detalles del plugin, incluyendo conectores y más métodos (que te animo y casi obligo a leer) están en: https://parzibyte.me/blog/2022/09/30/plugin-impresoras-termicas-version-3/
Buenas, excelente tu trabajo. Cuanto cuesta eliminar el pie de la impresion? Saludos
Hola. Gracias por sus comentarios. Los detalles de la licencia están en: https://parzibyte.me/blog/2022/10/02/contratar-licencia-para-plugin-impresora-termica-v3/