Impresoras

Imprimir ñ en impresora térmica

En este post te enseñaré a imprimir la letra ñ en una impresora térmica. Voy a mostrarte 3 alternativas para imprimir la ñ en una POS printer usando comandos ESC POS. La primera alternativa será definir un carácter personalizado en una cuadrícula de 12×24, luego veremos cómo cambiar la página de códigos de la impresora térmica para imprimir la ñ y finalmente vamos a ver cómo imprimir HTML como imagen.

Así que al final vas a poder imprimir la ñ en una impresora térmica usando la alternativa que prefieras.

Nota: obviamente estas son alternativas en caso de que tu impresora no soporte la impresión de la letra eñe sin modificaciones adicionales. Por ejemplo, en mi impresora PT-210 puedo imprimir la ñ así como cualquier otro texto. Este post te va a enseñar a imprimir la Ñ en tu impresora térmica si la misma no es soportada o si en lugar de la letra se imprime un carácter extraño.

Definir la ñ como un carácter personalizado

Letra ñ en impresora térmica

Puedes dibujar la Ñ en una cuadrícula de 12×24 con ceros y unos. Esto permite imprimirla como si fuera texto nativo, además de respetar el enfatizado y el cambio de tamaño de fuente. La desventaja es que debes sacrificar otro carácter.

La letra ñ dibujada con ceros y unos se ve así:

000000000000
000000000000
000000000000
000111000100
001111111110
001101111100
000000010000
000000000000
011001111100
011111111110
011111001110
011100001110
011100001110
011000000110
011000000110
011000000110
011000000110
011000000110
011000000110
011000000110
011000000110
000000000000
000000000000
000000000000

Después podemos indicarle a la impresora térmica su definición y el carácter que va a reemplazar:

{
      "nombre": "DefinirCaracterPersonalizado",
      "argumentos": [
        "_",
        "000000000000\n000000000000\n000000000000\n000111000100\n001111111110\n001101111100\n000000010000\n000000000000\n011001111100\n011111111110\n011111001110\n011100001110\n011100001110\n011000000110\n011000000110\n011000000110\n011000000110\n011000000110\n011000000110\n011000000110\n011000000110\n000000000000\n000000000000\n000000000000"
      ]
    },

En este ejemplo se va a reemplazar el guion bajo. Ahora, cada vez que se imprima algún texto con el guion bajo así:

    {
      "nombre": "EscribirTexto",
      "argumentos": [
        "Hola mundo. Imprimiendo letras que no existen en mi impresora, como la _"
      ]
    },

El texto resultante será Hola mundo. Imprimiendo letras que no existen en mi impresora, como la ñ. Puedes probar esta operación en el playground.

Nota: no todas las impresoras soportan la definición de un carácter personalizado. Mi Xprinter 58 sí lo hace, pero mi PT-210 no.

Cambiar página de códigos de caracteres

La siguiente opción para imprimir la ñ es cambiar la charcode page. Con mi Xprinter 58 tengo la opción de deshabilitar el modo de caracteres chinos y luego imprimir texto cambiando la página de código de caracteres.

const cargaUtil = {
  "serial": "",
  "nombreImpresora": "",
  "operaciones": [
    {
      "nombre": "DeshabilitarElModoDeCaracteresChinos",
      "argumentos": []
    },
    {
      "nombre": "TextoSegunPaginaDeCodigos",
      "argumentos": [
        2,
        "cp850",
        "Hola señor"
      ]
    },
    {
      "nombre": "Feed",
      "argumentos": [
        4
      ]
    }
  ]
};

Fíjate que al usar TextoSegunPaginaDeCodigos con el número de página 2 y el charcode page cp850 puedo imprimir la ñ en mi POS printer, y no solo la ñ, también letras con tildes y más caracteres propios del español.

Como ya lo dije previamente: no todas las impresoras lo soportan, y el código de las páginas de caracteres varía entre modelos. Lo que recomiendo es probar con todas las combinaciones posibles.

Puedes probar este ejemplo en el playground.

Imprimir ñ usando HTML

Las impresoras térmicas pueden imprimir imágenes, así que podemos convertir una cadena de código HTML a imagen y después imprimir dicha imagen. Podemos escribir la ñ y cualquier otro texto dentro de esa cadena de HTML pues al final será como tomarle una captura de pantalla a una página web.

De este modo también podemos imprimir la letra Ñ usando comandos ESC POS.

const cargaUtil = {
  "serial": "",
  "nombreImpresora": "",
  "operaciones": [
    {
      "nombre": "Iniciar",
      "argumentos": []
    },
    {
      "nombre": "GenerarImagenAPartirDeHtmlEImprimir",
      "argumentos": [
        "<html><meta charset=\"UTF-8\"><p><strong>¡Hola</strong> mundo! Soy la letra ñ</p></html>",
        380,
        380,
        0,
        false
      ]
    }
  ]
};
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);
}

Revisa el ejemplo en el área de pruebas.

Conclusión

Existen varias formas de imprimir la letra ñ. Todo depende de tu impresora y tus necesidades. La opción que más recomiendo es la que involucra HTML.

Te dejo con un editor visual para impresora térmica y con la documentación oficial de las impresoras térmicas.

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/

Entradas recientes

Tramitar acta de nacimiento en línea de manera instantánea

En este post te quiero compartir mi experiencia tramitando un acta de nacimiento de México…

23 horas hace

Creador de credenciales web – Aplicación gratuita

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

2 semanas 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…

3 semanas 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…

3 semanas 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…

3 semanas hace

Errores de Comlink y algunas soluciones

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

3 semanas hace

Esta web usa cookies.