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.

<?php
use Mike42\Escpos\PrintConnectors\WindowsPrintConnector;
use Mike42\Escpos\Printer;

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í:

<?php
$nombreImpresora = "POS-58";
$connector = new WindowsPrintConnector($nombreImpresora);
$impresora = new Printer($connector);
$impresora->setJustification(Printer::JUSTIFY_CENTER);
$impresora->setTextSize(2, 2);
$impresora->text("Imprimiendo\n");
$impresora->text("ticket\n");
$impresora->text("desde\n");
$impresora->text("Laravel\n");
$impresora->setTextSize(1, 1);
$impresora->text("https://parzibyte.me");
$impresora->feed(5);
$impresora->close();

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.

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.

13 comentarios en “Laravel: imprimir ticket en impresora térmica”

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

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

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

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

  4. 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 ?

  5. 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?

  6. 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*/}

    1. 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 🙂

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

Dejar un comentario

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