Hoy vamos a ver cómo generar e imprimir códigos de barras en una impresora térmica desde Windows, Linux o Raspberry Pi (técnicamente desde Windows, derivados de Debian y Raspbian).
Podremos imprimir códigos de barras Codabar, Code 128, Code 39, Code 93, Ean, Ean8, PDF417, Two of Five ITF, UPC A y UPC E.
También vamos a poder personalizar las medidas, es decir, el ancho y el alto. Podremos hacer esto desde cualquier lenguaje de programación incluyendo JavaScript (desde el navegador web), Java y Python.
Funcionamiento
Vamos a usar un plugin gratuito que he programado y que funciona para todas las plataformas mencionadas anteriormente.
El ejemplo que te voy a mostrar está programado con JavaScript para que lo puedas probar directamente en tu navegador pero más adelante puedes usar otros lenguajes siguiendo la documentación de la API.
Configurar impresora y descargar servidor HTTP a ESC POS
Para que el código funcione necesitas el servidor local de la API ESC POS 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/
Primera prueba
Navega a este enlace para imprimir un código de barras.
Debería aparecer un código de barras que puede verse así:
Más adelante podrás crear tus propios conectores para comunicarte con el plugin. También aprenderás a cambiar el ancho y alto del código de barras.
Por ejemplo, yo he logrado imprimir uno de hasta 400×80 y se ve genial:
Te repito que el tamaño depende de las capacidades de tu impresora. En mi Xprinter 58 no soporta códigos más largos pero creo que ya anda fallando algo de su conexión, y en cambio en la GOOJPRT PT-210 funciona perfectamente.
Me imagino que con las Epson no tendrás ningún problema, pero como siempre: es cuestión de probar y experimentar.
Código para imprimir barcode en thermal printer
Ya te he mostrado los resultados antes del código. La implementación es realmente sencilla, ya que solo es cuestión de consumir una API HTTP local que envía operaciones ESC POS a las impresoras térmicas, y en este caso también se puede enviar una operación para imprimir un código de barras.
Por ejemplo, veamos el código de JavaScript para un código en formato Code 128:
const cargaUtil = {
"serial": "",
"nombreImpresora": "",
"operaciones": [
{
"nombre": "Iniciar",
"argumentos": []
},
{
"nombre": "ImprimirCodigoDeBarrasCode128",
"argumentos": [
"D387266D",
80,
380,
0
]
},
{
"nombre": "Iniciar",
"argumentos": []
},
{
"nombre": "Feed",
"argumentos": [
2
]
}
]
};
const respuestaHttp = await fetch("http://localhost:8000/imprimir", {
method: "POST",
body: JSON.stringify(cargaUtil)
});
const respuesta = await respuestaHttp.json();
if (respuesta.ok) {
console.log("Impreso correctamente")
} else {
console.error("Petición ok pero error en el plugin: " + respuesta.message);
}
El arreglo de operaciones contiene varios comandos ESC POS, entre ellos el de ImprimirCodigoDeBarrasCode128 que permite imprimir el código de barras.
Puedes imprimir ese código desde cualquier lenguaje de programación, ya que la API está totalmente documentada.
Por si te lo preguntas, los códigos de barras son legibles. Incluso el más pequeño lo es:
Conclusión
Igualmente tengo un plugin para impresoras Bluetooth, y se pueden imprimir códigos de barras, QR y todo lo que se puede hacer con este plugin.
También tengo otro post explicando la impresión de códigos QR en impresoras térmicas:
Por aquí te dejo más posts con relación al plugin.