lunes, 26 de julio de 2010

Imprimir con Ticketeras TMU 220 y PHP en Linux

Hola he decidido crear este blog debido a los multiples problemas que tuve al querer imprimir tickets con una impresora de tickets TMU 220 pa en Sistemas Operativos Linux

En primer lugar no existen drivers (Controladores) para Linux para estas impresoras
La unica forma de imprimir sin borrones o letras cortadas es escribiendo directo en el puerto paralelo /dev/lp0 o si el cable es usb /dev/usb/lp0

NOTA: Esto hace que no se pueda cambiar el tamaño de la fuente e imprimie en colores y tampoco cortar el papel automaticamente...

PERO: Nos ahorra instalacion de Drivers (Eso si es genial)

Por lo tanto debemos armar nuestro ticket solo con letras y guiones.

En mi caso particular que uso PHP para buscar los datos del ticket del lado del servidor tuve problemas por que PHP esta hecho para que funcione del lado del servidor y no del lado del cliente por lo tanto es necesario instalar php en los clientes tambien

Generalizando los pasos son los siguientes

1- Hacer un programa en php para la maquina cliente que espere el contenido del ticket y lo escriba al puerto lo llamaremos ticket.php y lo pondremos en /var/www/html

2- hacer la consulta del lado del servidor y armar un pequeño formulario con el contenido que se imprimirá y cuando se cargue todo redireccionarlo a http://localhost/ticket.php

3- Modificar el archivo /etc/group y agregar el usuario apache al grupo lp para que pueda escribir al puerto /dev/lp0


El contenido del archivo ticket.php seria el siguiente

<?php

// file: ticket.php



$contenido = $_REQUEST['contenido'];

$PRINTER_PORT = '/dev/lp0';



echo "$contenido"; // Mostrar el contenido



exec("echo $contenido > $PRINTER_PORT"); // Escribo al puerto



echo'

<form action="http://localhost/ticket.php" method="POST" >

<input type="hidden" name="contenido" value="$contenido">



<input type="submit" value="Re Imprimir">

</form>



';



?>


// Del lado del servidor armamos nuestro ticket con una consulta SQL o de alguna forma pero aqui solo mostrare el ejemplo ya armado

<?php





$contenido = "+------ Mi Ticket ------+\n

Fecha : Hoy

Cliente: Fulano de Tal

Codigo Precio Cantidad Subtotal

1 1000 2 2000\n

2 1500 2 3000\n

Total: 5000



Gracias por su preferencia

";



echo'

<form name="ticket" action="http://localhost/ticket.php" method="POST" >

<input type="hidden" name="contenido" value="$contenido">



<script>

document.ticket.submit();

</script

</form> '



?>
// Esto hará que al mostrarse se redirecciones a la maquina local
// y el otro PHP que //esta corriento localmente tome el contenido
// Para saber su funciona la ticketera como root escribe en la consola
// echo Hola Mundo :) > /dev/lp0