Plugin ESC POS v3

Impresora térmica con Telegram usando Bot

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.

Telegram e impresora térmica – Impresión desde cualquier dispositivo usando Bot

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.

Código fuente del Bot

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.

Hablar con bot de Telegram para impresora térmica

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.

Herramienta para impresora térmica

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:

  1. 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 plugin
  2. wkhtmltoimage.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 plugin

Nota: 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.

Probando plugin para impresora térmica

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.

Impresora térmica con Bot de Telegram – Consultar versión de plugin

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.

Configuración de 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/

Imprimir en impresora térmica usando Telegram

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.

Hola mundo impresora térmica con Telegram

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.

Modo de uso

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/

Arquitectura

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.

Conclusión

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…

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

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 días 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 días 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 días hace

Errores de Comlink y algunas soluciones

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

3 días hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

3 días hace

Solución: Apache – Server unable to read htaccess file

Ayer estaba editando unos archivos que son servidos con el servidor Apache y al visitarlos…

4 días hace

Esta web usa cookies.