Bot de Telegram

Imprimir PDF con Bot de Telegram

La impresión de un PDF en cualquier impresora se puede automatizar con un bot de Telegram. En este post te mostraré el código fuente y la configuración de un Bot de Telegram para imprimir un PDF desde cualquier lugar en cualquier impresora.

Bot de Telegram para imprimir PDF desde cualquier lugar

Gracias a esto vas a poder enviarle un PDF (como archivo) al Bot y el documento será impreso en la impresora seleccionada por el usuario, todo en una misma computadora. El Bot también permite impresión de PDF a partir de una URL.

Lo bueno de todo esto es que vas a poder imprimir desde cualquier dispositivo y lugar del mundo, ya que el Bot estará escuchando a cuando reciba un mensaje de cualquier usuario.

Veamos cómo funciona este Bot de Telegram que permite imprimir un PDF de manera automatizada e instantánea en cualquier impresora.

Código fuente del Bot

Comencemos hablando del código que hace que el Bot de Telegram pueda imprimir un PDF enviado por cualquier usuario. El código completo está en: https://github.com/parzibyte/telegram-bot-pdf-print

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.

Probando ejecución de Bot de Telegram para imprimir PDF

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 imprimir PDF

Ya has completado el primer paso: la ejecución del Bot de Telegram, pero el Bot por sí mismo no puede imprimir los documentos. Vamos a necesitar 2 herramientas adicionales:

  1. plugin_pdf_prod_32.exe o plugin_pdf_prod_64.exe el cual se descarga en: https://github.com/parzibyte/plugin-silent-pdf-print-examples/releases/latest
  2. PDFtoPrinter.exe el cual se descarga en: https://mendelson.org/pdftoprinter.html o en https://github.com/emendelson/pdftoprinter/blob/main/PDFtoPrinter.exe?raw=true

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_pdf_prod_32.exe o plugin_pdf_prod_64.exe y deja a PDFtoPrinter.exe en el mismo directorio donde se encuentra el archivo que has ejecutado.

Probando plugin

Hasta este momento el Bot de impresión de PDF debe estar en ejecución así como el Plugin para PDF (mismo que no abre ninguna ventana). Vuelve a enviar el mensaje /version al Bot y debe responder con lo siguiente:

Versión del plugin de impresión PDF desde Bot de Telegram

Si el mensaje “fetch failed” sigue apareciendo, asegúrate de haber ejecutado el plugin PDF y de que no hay ningún otro programa ejecutándose en el puerto 8080.

En caso de que aparezca el mensaje de la imagen, ya has configurado todo para poder imprimir documentos PDF desde Telegram.

Configurando impresora predeterminada

La impresora predeterminada se guarda por cada usuario, así que cada usuario puede imprimir en una impresora distinta al enviar el PDF al Bot de Telegram.

Si envías un PDF o un enlace de PDF al Bot y no has seleccionado una impresora, el Bot te pedirá que configures una. Este paso solo se tiene que hacer una vez, ya sea por recomendación del Bot o enviando el mensaje /impresoras y eligiendo alguna de la lista:

Configurar impresora para impresión de PDF desde Bot de Telegram

Puedes invocar ese menú cuando lo prefieras, así puedes seleccionar tu impresora preferida. Esto se guarda permanentemente y puede ser cambiado en cualquier momento ya sea desde el Bot o mirando el archivo impresoras.json.

Imprimir PDF enviando documento al Bot

Finalmente, después de tanta configuración, llegamos a la impresión del PDF desde el Bot. Lo bueno de esto es que solo tienes que configurar el Bot y descargar las herramientas una vez, y después todo será automático.

Primero veamos cómo imprimir un PDF enviado como documento. En este caso la captura es de mi teléfono Android y el PDF será impreso en la impresora que seleccioné en el Bot en la computadora donde se ejecuta:

Imprimir PDF enviado como documento con Bot de Telegram

Como puedes ver, no importa la plataforma desde donde envíes el PDF, al final el mismo será impreso con el Bot de Telegram. Así puedes imprimir PDF en una impresora remota (desde cualquier parte del mundo) desde un iPad, Android, PC, Mac, Linux, etcétera; donde sea que se ejecute Telegram, incluso desde la web.

Nota: si envías una descripción (caption) al momento de enviar el documento, se tomará como el nombre de la impresora y tomará precedencia a la impresora predeterminada. Si lo dejas vacío, se imprimirá en la impresora predeterminada.

PDF a partir de URL

El Bot también soporta la impresión de un PDF a partir de una URL. Basta con enviarle dicha URL para que el Bot descargue e imprima dicho documento:

Imprimir PDF de internet a partir de su URL enviándolo al Bot de Telegram

Más opciones

El Bot puede hacer muchas más cosas si lo modificas correctamente. Actualmente el plugin soporta la impresión de PDF como documento, como documento existente en la computadora, en base64 y también se puede crear en tiempo real a partir de una cadena HTML, pero no encontré la manera amigable de colocar esa opción en el Bot.

Puedes solicitarme modificaciones para que el Bot permita hacer más cosas, al final del post encontrarás mis datos de contacto. Recuerda que el mismo es open source, así que puedes modificarlo por ti mismo y analizar su comportamiento.

He escrito más tutoriales con este plugin, mismos que puedes leer en: https://parzibyte.me/blog/category/plugin-pdf/

Manejo de errores

A continuación describo algunos posibles errores. Si hay un error, el Bot te lo dirá indicando el mensaje de error.

  • Error: fork/exec PDFtoPrinter.exe: The system cannot find the file specified. No has descargado PDFtoPrinter.exe o no lo has colocado en la misma ubicación donde se encuentra el plugin
  • fetch failed: el plugin no se está ejecutando
  • Error: error al descargar el PDF de la url. Compruebe la URL y si el PDF está expuesto públicamente. El error es: el archivo que se intenta descargar  no es un PDF pues su contentType es ‘content-type’ y debería ser uno de ‘[application/pdf application/octet-stream]’. La respuesta, que no es un PDF, es: la URL que enviaste no es un PDF o no está servida correctamente. En el servidor, debes servir ese PDF con el encabezado application/pdf o application/octet-stream. Visita la URL y revisa si está expuesta públicamente además de permitir bots en tu servidor.
  • “Read: xRefTable failed: pdfcpu: can’t find last xref section”: el PDF que intentas imprimir no es compatible con el plugin, ya que el PDF tiene una versión que no es compatible con el plugin

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.