Ejemplos de impresión en impresora de tickets y PHP-GTK 2

Siguiendo con el trabajo utilizando PHP-GTK, y después de explicar como imprimir con impresora de tickets, ahora toca aprender algo de comandos hacia la impresora Epson TM-U200, aunque supongo que los comandos funcionarán, si no en todas las epson, en la gama TM.

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.

chr(238) -> es la numeración para escribir un símbolo parecido al Euro. (fwrite($handle, chr(238)))

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.

Etiquetas: , , , ,

14 comentarios para “Ejemplos de impresión en impresora de tickets y PHP-GTK 2”

  1. Tobia dice:

    Hello, I would like to know if this
    #fopen(”PRN”, “w”)
    works also in PHP-Apache webserver… forse example if i want to print from a web-based application.

    I just tried it and it works with PHP-GTK, but not with Apache-PHP, can be a way to let it works?
    Thanks

  2. Joan dice:

    This command (fopen(”PRN…) is buffer for a printer. Fill a PRN document, and later print this. If you like print with apache-php… you have permission for server to print in this?

  3. cristian dice:

    English:

    Is ussual the denied permission because all de comands launch from php files over apache is executed with the user “apache”. Try to change de permissons of lpr or inlcude apache user to on group of administration. this is very danbgerous for the security of aplication, use only for try detect your error.

    Spanish:
    Es habitual tener problemas con los permisos al ejecutar comandos desde archivos php, esto es debido a que todo comando lanzado desde un fichero php es ejecutado por el usuario “apache”, así es necesario cambiar los permisos del fiehro a ejecutar, en caso de ser la impresora hay que ir con cuidado para no crear problemas de seguridad.

  4. francisco dice:

    hola me puedes mandar el ejemplo para imprimir con php en una impresora de tickets de ante mano te agradesco mucho y espero su respuesta
    gracias

  5. joan dice:

    Tienes todo lo importante en este post, a partir de ahi hay que usar la imaginación para aprovecharlo. Un posible ejemplo seria:

    < ?
    $handle = fopen(”PRN”, “w”);
    fwrite($handle,chr(27). chr(64));
    fwrite($handle, chr(27). chr(97). chr(1));//centrado
    fwrite($handle,"Título");
    fwrite($handle, chr(27). chr(100). chr(1));//salto de linea
    fwrite($handle, chr(27). chr(97). chr(0)); //izquierda
    fwrite($handle, "texto");
    fclose($handle); // cierra el fichero PRN
    $salida = shell_exec(’lpr PRN’); //lpr->puerto impresora, imprimir archivo PRN
    ?>

  6. Martin dice:

    Tengo un pregunta y es la siguiente:

    Necesito imprimier tickets desde una impresora que esta intalada en un local de venta de productos, pero el sistema que usan esta en internet (o sea en otro servidor).
    Ellos utilizane el sistema que esta en internet para el registro de las ventas y necesitan que despues de realizar una venta se imprima el ticket en la controladora del local.

    Es posible imprimir desde la controladora del local cuando el sistema y los datos del mismo estan en interntet?

    Gracias por tu respueta de antemano.

  7. Brelis dice:

    Hola martin un favor quisiera saber si pudiste resolver tu problema, ya que tengo la misma situacion, espero me puedas ayudar

  8. Fernando Hernandez dice:

    Necesito imprimir un ticken en una impresora Epson TM200-U
    Sólo tiene controladores para windoes xp, asi que la voy a instalar ahí, usando wamp, zend framework.

    Cómo puedo imprimir utilizando eso? (Windows XP, Wamp/appserver o parecido y Zend framework php)

  9. M3t4lx dice:

    Gracias me funciono muy bien..

    Tengo una duda, de que manera agrego una imagen o logotipo al tiket?

    Saludos.

  10. erick dice:

    como puedo enviar un archivo pdf directamente, asia una impresora q esta en windows
    y mi server php es linux, una ayudita

  11. erick dice:

    como puedo enviar una impresion en pdf directamente a un aimpresora q esta en windows y mi server php esta en linux , una ayudita

  12. danteoh dice:

    tengo una duda entiendotodo el codigo pero al ahora que quiero enviarlo a una impresora via usb no se taba la pag

  13. Magga dice:

    y si mi impresora tiene conector usb como haria??

  14. cristian dice:

    el tema de tener un concentrador usb, la informacion a al hora de configurarlo no deberia de influir para nada. los concentradores son ladrones tontos la informacion deberia de llegar a todos los conectados…

    erik: configura la impresora en red o utiliza una impresora de pdf tipo cutepdf, no se si es lo que necesitabas…

    M3T4LX: las imagenes solo son soportadas segun el tipo de impresora.

Deja un comentario

CAPTCHA Image Audio Version
Reload Image