En este post te voy a mostrar cómo imprimir caracteres especiales en un ticket impreso con una impresora térmica.
Con lo mostrado aquí vas a poder imprimir letras ñ, acentos de español, símbolo de euro y muchos otros signos que no son posibles de imprimir normalmente.
Lo que ves en la siguiente foto no son imágenes; son caracteres definidos por mí que se pueden imprimir como si fueran texto y que van a reemplazar a una letra:
Nota: esto es la alternativa final en caso de que tu impresora no soporte los acentos o tildes.
Imprimiendo acentos y cosas de español
Las impresoras térmicas varían mucho en cuanto a los acentos y páginas de caracteres.
Algunas soportan la impresión de acentos sin configuraciones extras, otras necesitan deshabilitar el modo chino y convertir los caracteres y finalmente existen las que no soportan nada de eso.
Como sea, siempre recomiendo hacer lo siguiente en orden:
- Probar si puedes imprimir el carácter deseado normalmente (en la PT-210 funciona al menos en modo Bluetooth) invocando a
EscribirTexto
- Deshabilitar el modo de caracteres chinos e imprimir convirtiendo el texto según una página de códigos. Recomiendo probar con todas las páginas de caracteres hasta agotarlas, y combinar todo. Esto que menciono está implementado en la función
TextoSegunPaginaDeCodigos
de este plugin: https://parzibyte.me/blog/2022/09/30/plugin-impresoras-termicas-version-3/) - Definir un carácter personalizado como lo veremos a continuación.
Si nada funciona, recuerda que puedes enviarme un mensaje en https://parzibyte.me/#contacto para solicitar ayuda.
Definir carácter personalizado
Vamos a ver cómo definir una letra que tu impresora térmica no soporte, por ejemplo, el euro, el símbolo del centavo, el símbolo de tu moneda, la letra ñ, acentos o cualquier cosa que quepa en una cuadrícula de 12×24 en modo “pixel art”.
Nota: en este caso usaré un ejemplo con JavaScript pero podrás hacerlo con cualquier lenguaje de programación
Primero definimos el carácter como una cadena separada por saltos de línea. Por ejemplo:
Fíjate que la cadena no tiene tabulaciones ni espacios extra.
Lo que sigue es invocar a HabilitarCaracteresPersonalizados
y luego a DefinirCaracterPersonalizado
indicando el carácter que vamos a reemplazar y la matriz que lo remplaza.
Cuando hayamos hecho eso, el carácter de reemplazo aparecerá en lugar del carácter reemplazado al invocar a EscribirTexto
. Veamos un ejemplo:
Fíjate en la línea 22 y 23. Ahí en lugar del símbolo de pesos va a aparecer mi carácter personalizado.
Ahora en la línea 25 estoy imprimiendo el símbolo $
pero en realidad cuando se imprima el ticket aparecerá lo siguiente (revisa arriba de Gracias por su compra, junto al código QR):
Nota: la salida que ves está hecha con Python, pero así aprovecho para demostrar que se puede imprimir el carácter personalizado y que no importa desde cuál lenguaje de programación lo hagas.
Probarlo en línea
He creado un pequeño y simple playground en donde tú puedes definir el carácter para que obtengas la cadena de ceros y unos y luego puedas definir y enviar ese char personalizado.
Puedes probarlo en el siguiente enlace: https://parzibyte.github.io/ejemplos-javascript-plugin-v3/caracter_personalizado.html y ver el código fuente en: https://github.com/parzibyte/ejemplos-javascript-plugin-v3/blob/main/caracter_personalizado.html
Recuerda que antes de probarlo ya debiste haber configurado tu impresora y estar ejecutando el plugin. La guía está en:
Por cierto, por si te sirve, el símbolo del euro lo he definido así:
Aquí tienes un vídeo:
Sobre la compatibilidad
Recuerda que todas las impresoras tienen diferentes capacidades y algunas soportan cosas que otras no. Por ejemplo, mi Xprinter 58 permite definir e imprimir caracteres personalizados pero la PT-210 no.
Por otro lado la PT-210 permite imprimir acentos y todo tipo de caracteres sin convertirlos, pero no permite definir e imprimir caracteres personalizados.
0 Comentarios