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

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.

Si el post ha sido de tu agrado te invito a que me sigas para saber cuando haya escrito un nuevo post, haya actualizado algún sistema o publicado un nuevo software. Facebook | X | Instagram | Telegram | También estoy a tus órdenes para cualquier contratación en mi página de contacto