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
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
$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
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 :
ResponderEliminar$salida = shell_exec(’lpr USB001’);
no me hace nada.
Talvez alguna solucion??
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...
ResponderEliminarAhora 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
Para los que tienen problemas configurando las impresora, ingresen a esta nueva entrada que acabo de publicar, espero les ayude:
ResponderEliminarhttp://sergiozegarracorne.blogspot.pe/2016/05/imprimir-factura-php-desde-windows.html