En este artículo te voy a mostrar una guía para imprimir en una impresora térmica desde Telegram usando un Bot. Con esto, serás capaz de imprimir imágenes, páginas web, HTML, texto simple y formateado a una impresora térmica ESC POS desde cualquier dispositivo que pueda usar Telegram.
Cada usuario va a tener su impresora preferida y será capaz de hacer operaciones simples como imprimir texto simple hasta enviar fotos, códigos QR, HTML y operaciones para abrir el cajón o avanzar el papel.
El Bot de Telegram para impresoras térmicas es totalmente open source. En este post te enseñaré a configurarlo y descargar las herramientas necesarias para imprimir en una POS printer desde cualquier parte del mundo.
Comencemos hablando del código que hace que el Bot de Telegram pueda imprimir en una impresora térmica con comandos ESC POS. El código completo está en: https://github.com/parzibyte/telegram-bot-thermal-printer
La configuración del Bot y obtención del token es tu responsabilidad. En Telegram, habla con el BotFather para crear un Bot y que te proporcione el token. Esto es totalmente gratis y cualquiera puede hacerlo, incluso sin conocimientos de programación.
Guarda el token ya que lo vas a necesitar más tarde.
Necesitas contar con Node y NPM instalados. Cuando tengas el código fuente extraído en tu computadora abre una terminal, navega a la carpeta y ejecuta:
npm install
Después, crea un archivo llamado .env
basándote en .env.example
y coloca el token del Bot en TELEGRAM_BOT_TOKEN
Una vez que hayas creado el archivo .env
guarda los cambios y ejecuta:
node index.js
Con eso habrás ejecutado el Bot correctamente. Ahora ve a Telegram y envíale un mensaje que diga /version
, debe aparecer “fetch failed”, lo que indica que el Bot ya está en ejecución. Si no te devuelve ningún mensaje, asegúrate de seguir los pasos anteriores.
Nota importante: el Bot debe ser ejecutado en la computadora donde se encuentra conectada la impresora físicamente. Después de eso puedes enviar PDF a imprimir desde cualquier parte del mundo y dispositivo para que se impriman en la computadora donde el Bot se está ejecutando.
Ya has completado el primer paso: la ejecución del Bot de Telegram, pero el Bot por sí mismo no puede imprimir en la impresora térmica, solo funciona como puente. Vamos a necesitar 2 herramientas adicionales:
plugin_v3.4.0_prod_64.exe
o plugin_v3.4.0_prod_32.exe
el cual se descarga en: https://github.com/parzibyte/plugin-impresora-termica-v3/releases/latest/. Si viene con una DLL, deja dicha DLL en la misma ubicación del pluginwkhtmltoimage.exe
el cual se descarga en: https://wkhtmltopdf.org/downloads.html. Descarga el zip para Windows y extrae wkhtmltoimage.exe
en la misma carpeta donde se encuentre plugin_v3.4.0_prod_64.exe
o plugin_v3.4.0_prod_64.exe
y la DLL que vino con el pluginNota: ninguna de las herramientas contiene malware, aunque los antivirus o sistemas lo detecten como tal. Es tu responsabilidad obligar al sistema a confiar en los programas y de ser necesario agregarlos a las excepciones.
También he notado que en ocasiones el navegador bloquea la descarga; de nuevo, es tu responsabilidad forzarla.
Una vez descargados, ejecuta plugin_v3.4.0_prod_64.exe
o plugin_v3.4.0_prod_64.exe
y deja a wkhtmltoimage.exe
en el mismo directorio donde se encuentra el archivo que has ejecutado.
Para revisar si el plugin se está ejecutando, envía el mensaje /version
y debe responder con un mensaje parecido al que se ve en la imagen. Si el mensaje es un error, revisa que el plugin se esté ejecutando y que no hay ningún otro programa escuchando en el puerto 8000.
Como puedes ver, el plugin se está ejecutando en su versión 3.4.0 en la plataforma Desktop sobre windows. Esto significa que ya puedes empezar a usar el Bot para la impresión térmica, solo falta configurar la impresora.
Si ya has instalado tu impresora térmica previamente, debes desinstalarla.
Luego debes ir al panel de control, seleccionar el apartado de impresoras. Una vez ahí, elegir Agregar una impresora, esperar a que aparezca “La impresora deseada no está en la lista“, elegir Agregar una impresora local o de red con configuración manual.
En la siguiente ventana elegir el puerto USB00X donde la X es un número, elegir Generic y Generic Text Only en el controlador, dar un nombre sin espacios ni tildes para la impresora y compartirla (si no te da la opción de compartirla, termina la instalación y luego compártela en las propiedades).
Imprime una página de prueba y si la misma es correcta, ya puedes dar por finalizada esta sección. De lo contrario desinstala la impresora y vuelve a instalarla cambiando el puerto. También puedes cambiar el puerto desde las propiedades.
Hay un tutorial extenso y con imágenes en: https://parzibyte.me/blog/2017/12/11/instalar-impresora-termica-generica/
Es obligatorio que la impresora esté instalada como genérica, no tenga espacios o tildes en su nombre y que esté compartida.
Si usas Linux o Raspberry Pi: https://parzibyte.me/blog/2021/07/22/instalar-impresora-termica-linux-imprimir/
Después de haber configurado el plugin, el bot y la impresora es momento de imprimir. Envía un mensaje de texto al bot y te debe mostrar todas las impresoras compatibles para que puedas elegir la tuya.
Nota: si tu impresora no aparece, es porque no la instalaste correctamente o no la compartiste. Después de haber elegido tu impresora, envía cualquier texto al bot y el mismo será impreso en tu ESC POS printer seleccionada.
Si ya has impreso el hola mundo correctamente entonces pasemos al modo de uso, ya que serás capaz de imprimir imágenes enviadas a Telegram, páginas web, operaciones en formato JSON, código HTML y todo lo necesario para imprimir tickets desde Telegram.
Todo el texto sin formato que no sea código, comando o URL será impreso como texto en la impresora térmica
Envía un enlace de una página web que no cargue recursos externos y será impresa como una imagen
Comparte una foto (como foto, no como archivo) y será impresa
Si envías código HTML, el mismo será renderizado como imagen en impreso. Para esto necesitas wkhtmltoimage.exe. Por ejemplo:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Receipt example</title>
</head>
<body>
<p>Hola mundo!</p>
</body>
</html>
```
Envía un arreglo de operaciones codificada como JSON siguiendo las operaciones de la API del plugin y podrás imprimirlo a un nivel más granular:
```json
[
{
"nombre": "EscribirTexto",
"argumentos": ["Hola impresora desde Telegram"]
}
]
```
Puedes ver la documentación del plugin para ver todas las funciones ESC POS:
El ancho máximo para todas las imágenes impresas es 380 es y el algoritmo seleccionado es 0, pero puede ser 0, 1 o 2. Mira: https://parzibyte.me/blog/2024/01/23/actualizacion-plugin-esc-pos-v3-3-0-algoritmos-imagenes/
Con lo presentado aquí vas a poder ser capaz de imprimir en una red de área mundial y desde cualquier dispositivo sin importar el sistema operativo, siempre y cuando se pueda usar Telegram.
De este modo puedes imprimir desde un iPad, Mac, Android, Windows desde cualquier parte del mundo en una sola impresora, y puedes tener varias instancias del bot ejecutándose. Las posibilidades son infinitas.
Recuerda: el plugin, el bot de Telegram y la impresora deben estar en la misma computadora, y una vez que los hayas configurado vas a poder imprimir desde cualquier parte del mundo.
Me sorprende lo mucho que se puede lograr usando las herramientas adecuadas y combinándolas entre sí. Es muy interesante ver este bot de Telegram para imprimir en impresoras térmicas desde cualquier parte del mundo.
Recuerda que también tengo un bot que permite Imprimir un PDF desde Telegram, y que el plugin mostrado aquí tiene su equivalente para poder imprimir en impresoras térmicas Bluetooth desde Android.
Me pregunto si se puede ejecutar un Bot de Telegram en Android ya sea con Termux o nativamente; puede que en el futuro lo intente…
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.