En este post te mostraré cómo imprimir en red local usando mi plugin para impresión térmica versión 1.

Te enseñaré a saltarte las limitaciones de seguridad del navegador para poder invocar http desde https; y esto también te permitirá imprimir desde Android.

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 Chrome 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

Nota: si vas a usarlo en Android mira la guía de cómo instalarlo y obtenerlo.

Ahora que ya expliqué la solución, veamos cómo aplicarlo. El plugin ya lleva incorporado el reenvío en la ruta imprimir_y_reenviar que reenvía la información a otro plugin y recibe la IP e impresora de la máquina remota.

El cliente en Impresora.js igual ya tiene el método imprimirEnImpresoraConNombreEIp, solo debes invocarlo.

Veamos un ejemplo que ya está en el repositorio:

Fíjate en la línea 33. Creamos nuestra instancia de impresora y creamos nuestro ticket como normalmente lo haríamos, pero en lugar de invocar a imprimirEn invocamos a imprimirEnImpresoraConNombreEIp que recibe el nombre de impresora y la IP.

Ten en cuenta que no recibe el puerto ni ajustes adicionales, solo recibe la IP sin puerto (por ejemplo 192.168.1.55) y el nombre de la impresora como cadena, que ya debe estar compartida y funcionando en la otra computadora.

También recuerda que el plugin debe estarse ejecutando en ambos hosts, y que no debes cambiar RUTA_API, porque la magia del reenvío está en la línea 33.

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 premium.

La versión para Android es opcional solo si usas dispositivos con este sistema operativo, y se vende por separado aunque hayas obtenido la versión premium para Windows o Linux.

Por si no sabes de qué hablé en todo este post te recomiendo ver los detalles del plugin.


Estoy disponible para trabajar en tu proyecto o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.
Si el post fue de tu agrado muestra tu apoyo compartiéndolo, suscribiéndote al blog, siguiéndome o realizando una donación.

Suscribir por correo

Ingresa tu correo y recibirás mis últimas entradas sobre programación, open source, bases de datos y todo lo relacionado con informática

Únete a otros 4,747 suscriptores


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/

4 Comentarios

Paula · junio 28, 2022 a las 2:28 am

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

Paula · junio 24, 2022 a las 5:24 pm

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

Deja un comentario

Marcador de posición del avatar

Tu dirección de correo electrónico no será publicada.

A %d blogueros les gusta esto: