Nota: te invito a leer cómo imprimir en impresora térmica usando Javascript, es un poco más fácil aunque tiene desventajas como no poder cortar el papel al gusto. Pero funciona sin tener que instalar librerías.
Las impresoras de tickets son muy populares y útiles en los establecimientos donde se necesita entregar un comprobante.
Puede que en alguna ocasión nos toque desarrollar un pequeño sistema en PHP y que tengamos que imprimir tickets.
Para ello es que escribo este tutorial; que al final nos dará un resultado parecido al siguiente:
Si quieres descargar un ejemplo rápido y funcional, mira el repositorio de GitHub. Solo tienes que descargar el código, cambiar el nombre de tu impresora y probar.
Actualización 2020: varios usuarios me dicen que no encuentran el autoload. Es cuestión de usar composer, pero si no quieres, puedes descargar el autoload y la carpeta src desde mi perfil de GitHub.
Vamos a ir al repositorio de GitHub y hacer clic en Download ZIP (también podemos clonar el repositorio si es que sabemos usar git).
Después, vamos a extraer ese archivo en una carpeta de nuestra elección.
Esta carpeta debe ser una carpeta que sea accesible desde nuestro entorno de desarrollo web. Si usamos XAMPP, la carpeta está en C:\xampp\htdocs.
Nos tiene que quedar algo así:
Entraremos a la carpeta y sólo dejaremos la carpeta src y el archivo autoload.php. Lo demás podemos eliminarlo:
Vamos a renombrar la carpeta a un nombre más fácil de recordar. En mi caso la llamaré “ticket”
Hasta el momento nuestro proyecto debe lucir así:
Vamos a crear un archivo llamado index.php en donde está la carpeta que acabamos de renombrar, de manera que quede así:
Dentro del archivo vamos a escribir lo siguiente:
Y al llamarla desde localhost/probarticket/ticket.php el resultado es el siguiente:
Pero no sólo podemos hacer eso, podemos hacer muchísimas cosas más.
En el repositorio oficial podemos encontrar miles de ejemplos, pero en este caso haré uno para imprimir un ticket de venta.
Ya después podemos hacer uso de number_format, poner el cambio, un mensaje dependiendo de la hora, etcétera.
En el repositorio oficial hay ejemplos para imprimir códigos qr, códigos de barras, y otras cosas más.
Recuerda, si quieres imprimir nativamente a la impresora de tickets, sin depender de PHP mira este post.
Si usas Laravel mira cómo integrar la librería en Laravel.
En ocasiones es necesario leer los pixeles y colores de una imagen con JavaScript del…
Siguiendo con los tutoriales de listas desplegables o select con JavaScript, vamos a ver cómo…
Hoy vamos a ver programar la impresión de un PDF generado a partir de HTML…
En este tutorial básico de JavaScript con HTML vamos a ver cómo llenar una lista…
En este artículo se presenta una guía para imprimir un PDF a partir de una…
En este post voy a enseñarte cómo imprimir un PDF a partir de su representación…
Esta web usa cookies.
Ver comentarios
Hola, me imprime todo menos la imagen
Tal vez hay que cambiar el algoritmo: https://parzibyte.me/blog/2024/01/17/metodos-imprimir-imagenes-impresoras-termicas/
Hola, me imprime todo menos la imagen del ejemplo de arriba
Tal vez hay que cambiar el algoritmo: https://parzibyte.me/blog/2024/01/17/metodos-imprimir-imagenes-impresoras-termicas/
Hola me podrias ayudar, e puesto el codigo pero me sale Esta pagina no funciona y el error HTTP ERROR 500
Hola. Claro, envíeme mensaje en https://parzibyte.me/#contacto
buenas me podria ayudar quiero imprimir en el ticket de venta el codigo qr para aceder a mi pagina o app
ya tengo el codigo puedo imprimir sin problema pero quiero que salga el qr
Hola. Claro, por favor vaya a https://parzibyte.me/#contacto para atenderle
Saludos!
Me funciona perfecto cuando lo uso en local, pero cuando lo subo al servidor, me sale error 500, a que se debe?
El error 500 puede deberse a varias cosas, pero en este caso específico supongo que es porque no se encuentra la impresora. Recuerde que PHP se ejecuta del lado del servidor, así que va a intentar imprimir en una impresora físicamente conectada al servidor. Como el servidor no tiene la impresora, se genera el error. En esos casos hay que imprimir del lado del cliente: https://parzibyte.me/blog/2022/09/30/comunicar-javascript-impresora-termica-usando-plugin-v3/
Hola! tras unas pruebas todo funciona perfecto. Solo una duda... ¿como podria imprimier el simbolo del Euro? €
He probado con varios codigos \128 \0128 € pero no logro que lo saque
BUenos dias Parzibyte, tengo el siguiente problema cuando llamo a index.php, podrias por favor darme una mano con este error.
Warning: copy(\\DESKTOP-ROM9TOI\POS-58): failed to open stream: No such file or directory in C:\xampp\htdocs\ticket\src\Mike42\Escpos\PrintConnectors\WindowsPrintConnector.php on line 372
Fatal error: Uncaught Exception: Failed to copy file to printer in C:\xampp\htdocs\ticket\src\Mike42\Escpos\PrintConnectors\WindowsPrintConnector.php:291 Stack trace: #0 C:\xampp\htdocs\ticket\src\Mike42\Escpos\PrintConnectors\WindowsPrintConnector.php(173): Mike42\Escpos\PrintConnectors\WindowsPrintConnector->finalizeWin('\e@\ea\x01\x1Dv0\x00 \x00\xFA\x00\x00\x00...') #1 C:\xampp\htdocs\ticket\src\Mike42\Escpos\Printer.php(503): Mike42\Escpos\PrintConnectors\WindowsPrintConnector->finalize() #2 C:\xampp\htdocs\ticket\index.php(69): Mike42\Escpos\Printer->close() #3 {main} thrown in C:\xampp\htdocs\ticket\src\Mike42\Escpos\PrintConnectors\WindowsPrintConnector.php on line 291
GRACIAS POR TU TIEMPO!!!!!
Si tiene alguna solicitud puede hacérmela llegar en https://parzibyte.me/#contacto
Excelente me funciono correctamente, después de batallar por mucho tiempo solo tuve que habilitar esta extensión en el php.ini del xampp (extension=intl) y agregar la libreria de (extension=php_printer dll), muchas gracias por tu aporte.
Tengo el mismo problema Rudy puedes ser mas especificó por favor para solucionar el mismo problema>
hola buen día, implementa la librería en mi aplicación funciona la impresión del ticket a nivel local (localhost), pero cuando lo desplegué en cpanel (SERVIDOR PUBLICO) ya no imprime...podrías recomendarme como hacerlo.
$nombre_impresora = "smb://HP-MIPC/POS-80C";
Sí. Debe imprimir del lado del cliente
Buenas tardes amigo. disculpa pero como hago para que me imprima el ticket doble. es decir que salgan dos tickets iguales. ya probe por config de impresora y no lo hace. Gracias
Imprima 2 veces y ya