viernes, 20 de noviembre de 2015

IMPRIMIR TICKET EN PUERTO PARALELO - TERMICA - MATRICIAL - FISCAL

Para los que aun tengan problemas y quieran imprimir con su impresora "antigua" en el puerto paralelo...

Aquí un ejemplo:




Vamos a crear un ‘buffer’ de contenido a partir de un fichero PRN.

$handle = fopen(”PRN”, “w”); // note 1

A partir de ahora escribiremos sobre $handler nuestro ticket, para a posteriori imprimir ese fichero.
Comandos útiles:

fwrite($handle,chr(27). chr(64));  //->Reinicializa la impresion, 
esto hay que hacerlo siempre al inicio.

Alineación:
fwrite($handle, chr(27). chr(97). chr(0)); //->Izquierda
fwrite($handle, chr(27). chr(97). chr(1)); //->Centro
fwrite($handle, chr(27). chr(97). chr(2)); //->Derecha

Este comando es bastante importante, ya que por ejemplo, en las alineaciones de múltiples palabras en una misma linea, por ejemplo para hacer una columna en centro y otra en derecha, si no hay un limpiado de buffer no funciona.

fwrite($handle, chr(27). chr(100). chr(N)); //-> Limpia el buffer, 
y salta N lineas, poner numero de saltos en la ‘N’, admite un 0.



Para cerrar el ‘PRN’ y imprimirlo, como explicamos en anteriores entradas:

fclose($handle); // cierra el fichero PRN
$salida = shell_exec(’lpr PRN’); //lpr->puerto impresora, imprimir archivo PRN


Básicamente con la combinación de estos comandos y sabiendo que “fwrite($handle, ‘Hola’);” es válido para escribir una frase en el ticket,creo que ya no tendréis problemas con ello.


Fuente: http://blog.controlzeta.net/?p=57


http://jsjconsultores.com


3 comentarios:

  1. Hola Sergio, esta muy bueno tu post, me gustaria que me ayudes con algo tengo una impresora epson TMU 220 (POS) y la conecto en el puerto USB pero al ejecutar :
    $salida = shell_exec(’lpr USB001’);
    no me hace nada.
    Talvez alguna solucion??

    ResponderEliminar
  2. Estimado Daniel, si estas usando windows no te va a reconocer el envio al puerto USB00X, para solucionarlo hay varias formas; te explico dos, o mejor aun voy a publicar un post adicional en estos dias con pantallazos para orientarte mejor, pero en resumen; si fuese WINDOWS tienes que instalar la impresora con los driver GENERIC/TEXT y ademas lo compartes por ejemplo con el nombre de FACTURA1, entonces si buscamos en la red tu pc (\\localhost\) quedaría o se visualizaría algo asi; \\localhost\FACTURA1, esto quiere decir que tu impresora esta compartida en red...

    Ahora desde PHP ya podemos trabajar con esta impresora, solo faltaría invocarla así

    $handle = fopen(”\\\\localhost\\FACTURA1”, “w”); // note 1

    LO DEMAS SERIA IGUAL

    fwrite($handle,chr(27). chr(64)); //

    Alineación:
    fwrite($handle, chr(27). chr(97). chr(0)); //->Izquierda
    fwrite($handle, chr(27). chr(97). chr(1)); //->Centro
    fwrite($handle, chr(27). chr(97). chr(2)); //->Derecha

    fwrite($handle, chr(27). chr(100). chr(N)); //-> Limpia el buffer,
    y salta N lineas, poner numero de saltos en la ‘N’, admite un 0.

    fclose($handle); // cierra el fichero PRN

    Otra forma es instalar y emular un puerto COM/SERIAL desde uno USB, es decir, estos emuladores te crean un puerto ejemplo COM05, es decir, todo lo que envíes al puerto COM5 Virtual lo redireccionaria al puerto USB00X, quedando el llamado así

    $handle = fopen(”COM05”, “w”); // note 1
    .....


    Si fuese con LINUXseria aun mas fácil, un ejemplo seria así

    $handle = fopen(”creo_un_txt”, “w”); // note 1

    A partir de ahora escribiremos sobre $handler nuestro ticket, para a posteriori imprimir ese fichero.
    Comandos útiles:

    fwrite($handle,chr(27). chr(64)); //->Reinicializa la impresion,
    esto hay que hacerlo siempre al inicio.

    Alineación:
    fwrite($handle, chr(27). chr(97). chr(0)); //->Izquierda
    fwrite($handle, chr(27). chr(97). chr(1)); //->Centro
    fwrite($handle, chr(27). chr(97). chr(2)); //->Derecha

    fwrite($handle, chr(27). chr(100). chr(N)); //

    Para cerrar el ‘PRN’ y imprimirlo, como explicamos en anteriores entradas:

    fclose($handle); // cierra el fichero PRN
    $salida = shell_exec(’cat creo_un_txt > /dev/usb/lp0 ’);

    Aquí creo un TXT con todo el contenido y comando necesario, después ese mismo TXT lo envió con el comando CAT txt > /dev/usb/lpX => esto es la ubicación donde se instala por defecto las impresoras USB...

    Espero pueda haberte ayudado, en estos dia subo la entrada con imagenes...

    Cual duda sigan escribiendo



    ResponderEliminar
  3. Para los que tienen problemas configurando las impresora, ingresen a esta nueva entrada que acabo de publicar, espero les ayude:

    http://sergiozegarracorne.blogspot.pe/2016/05/imprimir-factura-php-desde-windows.html

    ResponderEliminar