Imprimir en impresora térmica en red local

Imprimir en red usando plugin para impresora térmica

En este post te mostraré cómo imprimir en red local usando mi plugin para impresión en impresoras térmicas desde JavaScript.

Te enseñaré a saltarte las limitaciones de seguridad del navegador para poder invocar http desde https en cualquier lenguaje de programación y plataforma.

Explicando el problema

Lo que se quiere lograr es imprimir desde un dispositivo a una impresora que está conectada a otra computadora, y esa computadora está ejecutando el plugin además de encontrarse en la misma red local que el primero.

Vamos a suponer (para todo el tutorial) que la IP de la computadora que tiene la impresora y el plugin es la 192.168.1.55

El problema es que con las recientes actualizaciones de los navegadores no se puede invocar a una IP desde un sitio seguro, al menos que la IP tenga https.

Si esto no existiera, entonces podríamos cambiar la URL del plugin a 192.168.1.55:8000 y podríamos mandar la impresión ahí. Pero como no es posible debemos buscar alternativas.

Solución

Lo que podemos hacer es usar al mismo plugin como proxy. De este modo no vamos a invocar a una IP, sino a localhost y le vamos a indicar al plugin que envíe la solicitud a otro plugin indicado por la IP.

Imprimir en impresora térmica en red local
Imprimir en impresora térmica en red local

De este modo el sitio web del primer dispositivo va a invocar a localhost y no a una IP desconocida; la parte “insegura” la hará el plugin, pues el mismo reenviará la información a la red local y no le va a importar si tiene o no tiene https.

Apartado técnico

Ahora que ya expliqué la solución, veamos cómo aplicarlo. El plugin ya lleva incorporado el reenvío en la ruta reenviar que reenvía la información a otro sitio (indicado en la variable GET host).

Con esto puedes obtener las impresoras térmicas en red y también imprimir en red.

La documentación de la API contiene ejemplos para hacer este reenvío desde el plugin, usándolo como proxy.

Especificación HTTP

Ejemplos de la carga útil y modos de reenvío: https://parzibyte.me/http-esc-pos-desktop-docs/es/api/reenviar.html

Puedes usar lo visto aquí en cualquier plataforma y lenguaje de programación. Por ejemplo, enviar una impresión desde Windows a Raspberry Pi.

Y puedes hacerlo con JavaScript, Java, Python, C#, etcétera. Al final el plugin es un servidor HTTP.

Para reenviar la información haz una petición POST o GET a la URL del plugin /reenviar pasándole la variable host.

Por ejemplo, para obtener las impresoras en red, internamente el conector de JavaScript invocará a:

GET http://localhost:8000/reenviar?host=http://192.168.1.55:8000/impresoras

Y para imprimir:

POST http://localhost:8000/reenviar?host=http://192.168.1.55:8000/imprimir

Conclusión

Resumiendo, el plugin tal y como está ya sirve como proxy y como ayudante de impresión en impresoras térmicas. Funciona igual ya sea gratuito o con licencia.

Por si no sabes de qué hablé en todo este post te recomiendo ver los detalles del 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.

6 comentarios en “Imprimir en red usando plugin para impresora térmica”

  1. Te deje un mail, quiero solicitarte una asistencia pero no recibi una repuesta. Dime cómo puedo contactarte directamente así realizó el pago correspondiente a la consultoría . Gracias

  2. Hola, tengo un error de ‘Failed to fech’ al Imprimir_y_reenviar. Tengo los plugin funcionando en cada PC y con sus impresoras compartidas y funcionando. El código es el mismo que el del ejemplo, probe el otro ejemplo de mandar con nombre de impresora y si funciona. Sera que debo generar un certificado para que no me de el error a la petición fetch? Podrías ayudarme por favor

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *