dimecres, 25 de juliol de 2012

Imprimint Tiquets des de PHP

Avui he estat realitzant proves per imprimir en impressores de tiquets des de php i veieu el resultat a l'esquerra.

He inventat un sistema automatitzat de cues. S'ha de fer una mostra de cerveses del món a Calafell durant el proper cap de setmana, i he programat un software per què la gent que ja sàpiga el que vol, pugui utilitzar un software senzill de pantalla tàctil per fer ell mateix les seves comandes. El sistema imprimirà el tiquet i només caldrà pagar. Un sistema àgil de cues.

El software corre sobre un Windows 7.

El primer que he hagut de fer és ha estat instal.lar la impressora en mode text genèric i compartir-la.

Després he hagut d'enllaçar-la al port LPT1 de la següent manera:


NET USE LPT1: /DELETE
NET USE LPT1: \\nom_ordinador\nom_recurs_compartit_impressora /PERSISTENT:YES


He creat un arxiu .bat a l'escriptori amb aquest contingut i s'ha de cridar abans d'utilitzar el software.

El software està programat amb PHP i MySQL, així que he instal.lat al sistema l'EASYPHP.

El codi més important per imprimir és el següent que he adaptat de Sergio Zegrra Corne.Els bucles que s'utilitzen és per imprimir les línies de les comandes i que haureu de variar en el vostre cas


/**
 * @author ZEGARRA CORNE, Sergio
 * @copyright 2009
 */


if(($handle = @fopen("LPT1", "w")) === FALSE){
        die('No se puedo Imprimir, Verifique su conexion con el Terminal');
    }

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

//fwrite($handle, chr(27). chr(112). chr(48));//ABRIR EL CAJON
fwrite($handle, chr(27). chr(100). chr(0));//salto de linea VACIO
fwrite($handle, chr(27). chr(33). chr(8));//negrita
fwrite($handle, chr(27). chr(97). chr(1));//centrado
fwrite($handle,"CERVEZAINTERNACIONAL.NET");
fwrite($handle, chr(27). chr(100). chr(1));//salto de linea
//fwrite($handle, chr(27). chr(32). chr(3));//ESTACIO ENTRE LETRAS
//fwrite($handle, chr(27). chr(100). chr(1));//salto de linea
fwrite($handle,"DATA: ".date("d/m/Y")." HORA: ".date("H:i")."  TIQUET No. #".$_GET["ID_Comanda"]."#");
fwrite($handle, chr(27). chr(100). chr(1));//salto de linea
fwrite($handle,"------------------------------------------");
fwrite($handle, chr(27). chr(100). chr(1));//salto de linea
fwrite($handle, chr(27). chr(97). chr(0));//Izquierda
fwrite($handle, chr(27). chr(33). chr(0));//10cpp

$StrSql  = "SELECT *";
$StrSql .= " FROM comandes_linies";
$StrSql .= " WHERE id_comanda = ".$_GET["ID_Comanda"];

$Total = 0;

$resultComanda = mysql_query($StrSql);
while($rowComanda = mysql_fetch_array($resultComanda)){
  $Total += $rowComanda["total"];
  fwrite($handle,$rowComanda["descripcio"]);
  fwrite($handle, chr(27). chr(100). chr(1));//salto de linea
  fwrite($handle,$rowComanda["quantitat"]." x ".number_format($rowComanda["preu"], 2, ",", ".")." = ".number_format($rowComanda["total"], 2, ",", ".")." Eu.");
  fwrite($handle, chr(27). chr(100). chr(1));//salto de linea
  }
mysql_free_result($resultComanda);

fwrite($handle, chr(27). chr(33). chr(8));//negrita
fwrite($handle, chr(27). chr(97). chr(1));//centrado

fwrite($handle,"------------------------------------------");
fwrite($handle, chr(27). chr(100). chr(1));//salto de linea
fwrite($handle, chr(27). chr(97). chr(0));//Izquierda
fwrite($handle,"TOTAL: ".number_format($Total, 2, ",", ".")." Eu.");
fwrite($handle, chr(27). chr(100). chr(1));//salto de linea
fwrite($handle, chr(27). chr(97). chr(1));//centrado
fwrite($handle,"------------------------------------------");
fwrite($handle, chr(27). chr(100). chr(1));//salto de linea

fwrite($handle, chr(27). chr(97). chr(1));//centrado
fwrite($handle,"SOFTWARE BY INATICA.COM & PANTALLATACTIL.NET");
fwrite($handle, chr(27). chr(100). chr(1));//salto de linea
fwrite($handle, chr(27). chr(100). chr(1));//salto de linea
fwrite($handle,"GRACIES PER LA SEVA VISITA");
fwrite($handle, chr(27). chr(100). chr(1));//salto de linea
fwrite($handle, chr(29). chr(86). chr(66) .chr(10));// Corte parcial del papel. Depèn de la impressora


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


i Ja està!!!!!! sense tocar permissos ni res de res.

 
Tira Ecol