php

Imprimir en impresora térmica con PHP desde internet

Podemos imprimir en una impresora térmica desde PHP con comandos ESC POS usando, por ejemplo, la librería de mike42. Funciona bien si todo es en servidor local (ya que la computadora es a su vez cliente y servidor), pero el problema aparece cuando el proyecto se sube a internet y es necesario imprimir desde un servidor web.

Debemos recordar que PHP se ejecuta del lado del servidor, por lo que siempre tratará de imprimir en una impresora térmica conectada físicamente al servidor, así que no podemos imprimir en el lado del cliente.

Lo que nos queda es conectar la impresora al servidor de internet (es decir, viajar a donde sea que esté ubicado el servidor cada vez que se imprima) o buscar alternativas que te mostraré en este post.

Así que veamos cómo imprimir en una impresora térmica desde PHP pero cuando subimos el proyecto a internet.

Generando un PDF

La primera alternativa es generar un PDF con algo como Dompdf y enviar la salida al navegador para que el usuario imprima en cualquier impresora.

De este modo podemos soportar varios modelos de impresoras y también podemos diseñar tickets complejos. La desventaja sería que, como no estamos enviando comandos ESC POS no podemos controlar el corte de papel, avance de papel, apertura de cajón o cosas similares.

Ticket HTML

Por otro lado podemos diseñar un ticket con HTML y CSS (pre procesando lo necesario con PHP) y después invocar a window.print con JavaScript para mostrar el cuadro de diálogo del sistema que imprime.

Esto nos ahorra el uso de librerías y permite que generemos un ticket solo con CSS, HTML y JS. La desventaja es la misma que la presentada anteriormente.

Crear servidor web local

Otra alternativa es instalar un servidor web en la computadora del cliente. Puede ser con PHP o cualquier otro lenguaje que sea capaz de comunicarse con las impresora y que además sea capaz de recibir órdenes a través de HTTP.

De este modo podemos invocar a este servidor web desde JavaScript. De nuevo, no estaríamos usando PHP, pero podemos pre-procesar el código para invocarlo.

Usando plugin

En el pasado yo me enfrenté a este problema sobre cómo imprimir en PHP desde internet y no encontré alguna solución que me gustara, así que desarrollé un plugin.

Con este plugin el usuario simplemente tiene que descargarse un .exe (o el equivalente en su sistema operativo) y todo funcionará perfectamente.

Aquí te dejo un enlace de cómo usarlo con PHP. Yo recomiendo usar ese método porque es el más simple para el usuario y permite diseñar todo tipo de tickets:

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

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

1 semana hace

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…

2 semanas 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…

2 semanas 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…

2 semanas hace

Errores de Comlink y algunas soluciones

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

2 semanas 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…

2 semanas hace

Esta web usa cookies.