Parzibyte's blog

Blog de conocimiento gratuito: linux, programación, open source, bases de datos, android, frameworks, web e informática en general.

Laravel: imprimir ticket en impresora térmica

Hace algún tiempo te mostré cómo imprimir tickets en impresora térmica con PHP puro usando la maravillosa librería de Mike42, ahora te mostraré cómo hacerlo e integrarlo dentro del framework Laravel.

Al final vamos a imprimir un ticket usando Laravel, desde una ruta que va a invocar a un controlador.

Instalación de la librería

Debido a que Laravel utiliza composer para gestionar sus dependencias no hay problema en instalar la librería de esc pos usando este método. Para ello en tu proyecto abre una terminal y ejecuta:

composer require mike42/escpos-php

Espera a que se instale. Si pide extensiones habilítalas. Se debe ver así:

Instalando librería escpos-php en Laravel para imprimir tickets

Inclusión de la librería

Puedes invocar a los métodos desde donde tú quieras, para hacerlo simplemente indica que usarás el espacio del nombre de la librería. Lo bueno es que el autoload ya está incluido.

En este caso usaré WindowsPrintConnector porque estoy en Windows, y Printer es obligatorio para la impresora.

Imprimir primer ticket con Laravel

Ahora, desde cualquier método, ruta, controlador, etcétera podemos imprimir el ticket. Yo lo haré dentro de un controlador y queda así:

Recuerda que aplican las mismas reglas que cuando lo hicimos con PHP puro; es decir, si no tienes los controladores debes instalar la impresora como genérica y compartirla. El paso de compartirla es muy importante.

Al invocar a ese método desde una ruta, el resultado es:

Ticket impreso con Laravel y ESC POS

A partir de este ejemplo puedes imprimir tickets más complejos, tickets de venta, imágenes, etcétera.Yo ando haciendo este tutorial porque estoy trabajando en un punto de venta open source de Laravel que publicaré muy pronto.

Te invito a mirar más tutoriales de Laravel en mi blog.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

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.


13 pensamientos en "Laravel: imprimir ticket en impresora térmica"

    David dice:

    Hola, esto funciona si requiero instalar un servidor local, es decir tengo una red local con 3 computadoras, en una computadora estará configurado el servidor local e instalada la impresora, puedo mandar a imprimir desde otra computadora? todo lo haré desde un navegador web

    parzibyte dice:

    Hola. Le invito a probar y comentar sus resultados. Saludos!

    Diego dice:

    Siempre me doy una vuelta por tu web , tu contenido es muy bueno y ayudas siempre a nosotros que estamos empezando en lo que refiere a sistemas web,
    Agradezco Tus aportes, y recomiendo tu web cada ves que algún colega me pregunta por ayudas, Muy buenos tus aportes y quizá cuando aprendamos a volar en este maravilloso mundo recibas la mejor recompensa UN GRAN RECONOCIMIENTO Y CON ESTO TODO LO DEMAS .-Un Gran Abrazo Diego

    alvaro dice:

    amigo me funcionó perfecto en windows y local con xampp, pero mi Server web es linux, lo subí y no corrió, sabes cómo puedo solucionarlo ? de antemano muchas gracias. El error en la nube es:
    Exception
    Failed to print. Command “smbclient ‘//pre.premierintgroup.com/RP58 Printer’ -c ‘print -‘ -N -m SMB2” failed with exit code 1: Unrecognised protocol level SMB2Connection to pre.premierintgroup.com failed (Error NT_STATUS_CONNECTION_REFUSED)

    Mike42\Escpos\PrintConnectors\WindowsPrintConnector::finalizeLinux
    vendor/mike42/escpos-php/src/Mike42/Escpos/PrintConnectors/WindowsPrintConnector.php:230

    parzibyte dice:

    Hola. Recuerde que la impresora debe estar conectada físicamente a la computadora, en este caso debería estar conectada a su servidor web. También puede optar por imprimir del lado del cliente

    Yordy Rico dice:

    Hola Amigo. de antemano agradecer por tus buenos aparte a la comunidad.

    tengo una duda, esta librería funciona solo con el hardware conectado al servidor ?
    o puedo subir mi proyecto a un vps y desde cualquier cliente con su impresora pos podría hacer la impresión ?

    parzibyte dice:

    Hola. Así es, la impresora debe estar conectada físicamente al servidor. Para imprimir del lado del cliente le recomiendo: https://parzibyte.me/blog/2019/08/01/imprimir-ticket-impresora-termica-javascript-plugin/
    Saludos 🙂

    Moises dice:

    Amigo, no puedo encontrar la forma de imprimir el logo, es muy importante para mi imprimirlo, pero no lo encuentra el plugin 🙁 necesito saber por qué es, crees que puedas apoyarme?

    parzibyte dice:

    Con gusto lo ayudo. Encontrará más detalles en: https://parzibyte.me
    Saludos 🙂

    Moises Galvan dice:

    Amigo, buenas tardes, una disculpa, es que estoy queriendo imprimir el logo en el ticket desde un controller en laravel pero no encuentra la foto, necesito saber cual es la url correcta para que jale una imagen que esta en la raiz del proyecto si yo estoy queriendo llamarla desde un controller con esta instrucción:
    try{
    $logo = EscposImage::load(“logo.png”, false);
    $printer->bitImage($logo);
    }catch(Exception $e){/*No hacemos nada si hay error*/}

    parzibyte dice:

    Hola. Debe tratar de encontrar la ruta absoluta. Supongo que está en un controlador, su imagen debe estar en el mismo directorio del controlador, y si no, para indicar la ruta relativa, puede usar “../logo.png” si su imagen está un directorio arriba, etcétera; o encontrar la ruta absoluta usando por ejemplo base_path() y luego concatenando.
    Saludos 🙂

    Eduardo dice:

    Señala algunos problemas:

    Problem 1
    – Installation request for mike42/escpos-php ^3.0 -> satisfiable by mike42/e
    scpos-php[v3.0].
    – mike42/escpos-php v3.0 requires ext-intl * -> the requested PHP extension
    intl is missing from your system.

    To enable extensions, verify that they are enabled in your .ini files:
    – C:\xampp\php\php.ini
    You can also run `php –ini` inside terminal to see which files are used by PH
    P in CLI mode.

    Installation failed, deleting ./composer.json.

    parzibyte dice:

    Hola. Por favor lee los mensajes de error. Te está diciendo que habilites la extensión intl.
    Te invito a ver un vídeo de instalación de un sistema de Laravel en donde se usa esta librería: https://www.youtube.com/watch?v=HINrotzpaSs
    Saludos

Deja un comentario

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