Vamos paso a paso amigos:
Y ahora vamos con el lado del cliente que recibe.
En nuestro caso el servidor realiza el proceso de registro a travez de AJAX lo cual el proceso de registro nos devuelve la respuesta:
mediante jquery registro un nombre:
digamos que el input del form se llama txt_nom < - input id="txt_nom" type="text" - />
entonces con jquery lo rescatamos asi:
var nom = $("#txt_nom").val();
ahora este valor lo vamos a pasar a la pagina que procesa el registro, que se llama guarda.php
1 2 3 4 5 | <script>var nom = $("#txt_nom").val(); $ POST"guarda.php" nom:nomfunction datos_retorno //aqui resivo si es ok o error </script> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | //recibo los parametros $nom = $_POST["]; "$r = $objd-> ("); "if($r) echo "; "else echo "; "?> |
Ahora mas completo el script de aariba
1 2 3 4 5 6 7 8 9 10 | <script> $ POST"guarda.php" nom:nomfunction datos_retorno //aqui resivo si es ok o error if datos_retorno==true $ post"http://localhost/tosch/reporte/prueba.php" datos:"pasas algo" ; else alert"no se registro" ; </script> |
y la pagina prueba.php esta esto
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | if(($handle = @fopen(", "")) "=== FALSE){ die('); } '$dato = $_POST[']; '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,"); "fwrite($handle, chr(27). chr(100). chr(1));//salto de linea fwrite($handle, chr(27). chr(32). chr(3));//ESTACIO ENTRE LETRAS fwrite($handle,"); "fwrite($handle, chr(27). chr(32). chr(0));//ESTACIO ENTRE LETRAS 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(100). chr(0));//salto de linea VACIO 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,"); "fwrite($handle, chr(27). chr(100). chr(1));//salto de linea fwrite($handle, chr(27). chr(100). chr(1));//salto de linea fwrite($handle," ".$dato); fclose($handle); // cierra el fichero PRN $salida = shell_exec('); '//lpr->puerto impresora, imprimir archivo PRN ?> |
RECUERDEN QUE ESTA PAGINA prueba.php SE ESTA EJECUTANDO EN LA PC LOCAL, en mi caso en el DISTRITO DE ATE VITARTE, PUENTE PIEDRA, ETC.....
ESPERO QUE CON ESTO ESTE MAS CLARA LA SOLUCIÓN A SUS PROBLEMAS, y si no es así podemos ponernos en contacto, claro, siempre y cuando estén cerca, por el momento estoy ocupado, ya que estoy en mi VI CICLO de la IDAT y tan dejando mucha tarea, pero si aun le quedan mas dudas tratare de ralizar un video paso a paso.
Su amigo para servirles Sergio Zegarra
Para los que impriman en Puerto Paralelo
http://sergiozegarracorne.blogspot.pe/2015/11/imprimir-ticket-en-puerto-paralelo.html
http://www.jsjconsultores.com/
Hola, tengo varias dudas, estoy haciendo un prog para un punto de venta y debo imprimir el ticket para el cliente, el ticket tal cual lo tengo en pantalla es una consulta que llena una tabla, no es un archivo, que tengo que hacer para que la consulta (tabla) salga impresa en la ticketera fiscal
ResponderEliminarEL codigo de Sergio funciona si tu PHP corre en la PC cliente. En cambio, si tu PHP lo publicas en un proveedor de hosting y el cliente solo accede al mismo desde su PC mediante un browser, entonces vas a necesitar otro codigo como el mostrado aqui How to print raw ESC/POS commands from PHP directly to the client printer (esta en Ingles pero se entiende)
EliminarTrate de explicarte mejor para entenderte, y asi poder ayudarte
ResponderEliminarSergio Z.
Muchas Gracias por compartir esta solucion, llevo dias buscandolo
ResponderEliminarsolamente tengo una pregunta , este script sirve para imprimir en cualquier impresora fiscal sin importar el modelo o la marca , o si es laser o matricial?
saludos y muchas gracias nuevamente
Que tal Sergio, jamas he tenido que imprimir con algo diferente a una epson a tinta en hoja A4 PERO en esta oportunidad necesito que el programa imprima el recibo en una tiketera y no entiendo el proceso de impresion, veo que hay que enviar codigos manualmente para producir saltos de pagina, indicar negrita etc, etc. Mi prog funciona con Php + Mysql y algo de Java, todo mi problema esta en la impresion del ticket, no se como "pasar" el resultado de mi consulta a la ticketera, osea, cuando el mozo presione "Imprimir Ticket" que debo haber hecho para que esto suceda?
ResponderEliminarAmigo Dario, yo lo he probado en las impresoras BIXOLON que "emulan" el funcionamiento de las epson, start y otra que ahora no me acuerdo, tambien te menciono que los comandos que yo he usado son los ESP/POS de Epson, porque no he encontrado otras guias, es decir el programa diseñado con las instrucciones de EPSON los corrido en las BIXOLON (r270 y 350 plus)...
ResponderEliminarPerfecto Muchas gracias!!!
ResponderEliminarBuenas noches, trabajo en Php + Mysql y tengo problemas para imprimir las columnas del consumo en el ticket ya que aparece todo junto, osea:
ResponderEliminar1 Menestrone 30.00
2 Shiraz - Malbec Copa 11.00
1 Vegetales Oleo 0.00
y no:
1 Menestrone 30.00
2 Shiraz - Malbec Copa 11.00
1 Vegetales Oleo 0.00
que necesito hacer para que salga asi? como en los tickets de metro o plaza vea? mi codigo es el siguiente:
$texto = "txt.txt";
$txt = fopen($texto, 'w') or die("can't open file");
while {...
$inserto = "$detalle4 \t $nombrecarta[carta] \t $detalle3 \n";
fwrite($txt, $inserto);
}
fclose($txt);
...
$CUENTA="txt.txt";
$fh = fopen($CUENTA, 'r');
$Data = fread($fh, filesize($CUENTA));
...
fwrite($handle,$Data);
Ok amigo, eso lo puedes solucionar con el mismo php, tambien tube ese problema y lo soluciones con esta funcion de php
ResponderEliminarstr_pad($producto,9,'*',STR_PAD_LEFT)
Te explico:
$producto: nombre
9: es la cantidad de espacio o la anchura
*: es el caracter con lo que se va a completar si es que el $producto sea menor
STR_PAD_LEFT: es para completar hacia la derecha
A tambien tienes que crear una funcion para cortar el nombre del $producto ya que en ocaciones el nombres es mas grande de lo establecido y descuadra el diseño del papel
AL amigo de SoportePeru.Biz, disculpa por no responderte, ya que es un poco mas detallosa la explicacion, detallame algo mas...
http://tareasyclases.com ::: (beta)
-----------------------------------------------
Sergio Zegarra
Hola Sergio.
ResponderEliminarAntes que nada, felicitarte por tu aportación. Es útil y viene muy bien explicada. Sin embargo, tengo un problema a la hora de imprimir. Es el uso del puerto USB001 para la impresion, y $salida = shell_exec('lpr USB001'). No me hace nada de nada. Tienes alguna idea de porqué puede ser?
Un saludo y muchas gracias.
A la verdad amigo Pablo Calvo, ese tambien era un problema que yo tenia, ya que las impresoras que yo uso tambien tienen conectores USB aunque tambien hay versiones con SERIAL y ETHERNET, con SERIAL no hay problema ninguno ya que los comandos viajan directo al puerto, pero ya que en las laptop modernas no viene dicho puerto, escogi las de USB pero tuve la gran ayuda en que las impresoras fiscales de BIXOLON tienen un emulador de USB a SERIAL(com "#") trata de bajarte este emulados ya que si es que usas impresoras EPSON debe reconocerlo, a el modelo que uso es el R270.
ResponderEliminarOtra solucion similar es buscar un programa que te emule serial apartir del usb, ya que estos comandos son creados por PHP pero se ejecutan en el MS-DOS y este no soporta USB.
Informame tus avanzes y asi tambien poder resolver problemas de otros amigos
Sergio Z.
Este comentario ha sido eliminado por el autor.
ResponderEliminarHola de nuevo Segio. He adquirido el DOS2USB, que consigue emular para que todo lo que se envíe a lpt1 se redirija a USB001.
ResponderEliminarLa impresora que estoy utilizando es una Star DP8340S, y uso un conversor paralelo usb. Voy a seguir investigando, pues con las órdenes de shell_exec aún no me hace nada...
También tengo que decir que estoy trabajando con appserv (apache, mysql y php ). He leido que las impresiones no se pueden controlar si enfocas a un cliente. pero en mi caso, estoy en el servidor no?
Un saludo Sergio.
Gracias amigo Pablo por tus visita, bueno no he trabajado con las impresoras STAR pero voy a buscar algo de info ya que en algun momento me tocara y deseo estar preparado.
ResponderEliminarY no te entiendo cuando me dices < las impresoras no se pueden controlar >, amigo escribe tus dudas asi sean las mas simples o las mas dificiles de explicar, yo tratare de ayudarte con lo que he llegado a entender, ya que me gustaria implementar muchas mas cosas, pero me ponen un nuevo REPORTE cada dia y no puedo dedicarme al 100% a unas cosas que me gustaria profundicar.
Bueno un saludo de tu amigo Sergio...
-------------------------------------------------
Un concejo para todos mis amigos:
Mateo 16:26 "Porque ¿qué aprovechará al hombre, si ganare todo el mundo, y perdiere su alma? ¿O que recompensa dará el hombre por su alma?"
Meditenlo............Gracias
Hola de nuevo Sergio. Al final he optado por escribir todo el contenido en un txt, e imprimirlo. Pues he tenido problemas con los drivers de la Star DP8340s y Windows7.
ResponderEliminarHe solucionado el problema de las impresoras paralelo conectadas mediante cable conversor a notebooks.
Con esta sencilla sentencia en la terminal podemos simular una conexión directa a lpt1:
@NET USE LPT1: \\127.0.0.1\%Nombre_impresora% /PERSISTENT:YES
Previamente, he tenido que compartir la impresora en red.
Ahora, desde CMD puedo hacer un "type documento.txt > lpt1", y la impresion me la hace de maravilla.
Sin embargo, te voy a pedir ayuda una vez mas.
La orden en php: shell_exec("type midoc.txt > lpt1") no me hace absolutamente nada... he mirado en distintos foros y no he sacado nada en claro. tengo el safe mode desactivado...
Si escribo esa sentencia en CMD se imprime...
Si lo hago desde PHP no hace nada de nada...
¿Qué crees que puede ser?
Segio! Lo he conseguido! Al fín imprimí desde php! Voy a aprovechar este comentario para explicarlo, seguro que alguien le saca provecho!
ResponderEliminarObjetivo: Imprimir una factura/albaran/ticket mediante php a una impresora antigua con entrada paralelo. Haciendo uso de APPSERV(APACHE + PHP + MYSQL) y Windows 7.
Filosofía : Frente a los problemas que he tenido para enviar caracteres de control a mi impresora STAR DP8340S, he optado a crear un txt con el contenido de un albaran y enviarlo directamente a imprimir mediante php respetando las dimensiones de la hoja. Además, he usado el controlador GENERIC/TEXT ONLY por defecto de windows para poder imprimir.
Problemática: Las impresoras antiguas STAR,EPSON y otras marcas tienen la problemática de que funcionan con interfaces serial y paralelo. Yo trabajo con notebooks de 11" ( solo disponen de puertos USB). Las ordenes que usa php para la impresion son mediante CMD( símbolo de sistema), y digamos que MSDOS no se lleva bien con los puertos usb...así que tendremos que simular un puerto lpt1 virtualmente.
Para resolver el problema :
1º He adquirido un cable conversor paralelo-usb (10 euros mas o menos).
2º He conectado la impresora, y he seleccionado los drivers GENERIC/TEXT ONLY para la impresión.
3º He compartido en red la impresora con el nombre 'GEN'. ( Aunque trabajemos en 1 solo equipo, es necesario compartirla para poder hacer uso de ella mediante php)
4º He simulado el puerto lpt1 mediante una sentencia en MSDOS :
@NET USE LPT1: \\127.0.0.1\GEN /PERSISTENT:YES
5ºHe modificado el ficher php.ini de manera que:
-Safe_mode = off
-Safe_mode_include_dir = on
6º En services.msc (mediante regedit podeis acceder) he dado permisos de interacción a apache
7ºHe creado un archivo (Imprime.bat) que hace la siguiente llamada :
@type mi_archivo_a_imprimir.txt > lpt1
9ºDesde mi página php, hago la siguiente llamada para la impresion:
exec('c:\WINDOWS\system32\cmd.exe /c START c:/Appserv/www/autoventa/impresion/Imprime.bat');
La impresion se realiza con éxito.
Incluyo mi email por si alguien tiene problemas. Gracias a post como el de Sergio he conseguido resolver esta cuestión
c a l v o c a b e z a s @ g m a i l . c o m
Un saludo a todos
Grande amigo Pablo, me dejaste sin palabras, veo que intentaste y conseguiste, ademas te agradesco el comentario.
ResponderEliminarSin mas que hablar ahora yo estoy con el siguiente problema, lo mismo, que no puedo imprimir en una impresora fiscal con puerto USB pero ahora es el S.O. LINUX (UBUNTU/CENTOS).
Esplico un poco amigos lo que e conseguido (en especial a ti amigo Pablo, quisas entre los dos logremos tener exito):
Primeramente he visto o he provado la buena calidad que tienen la plataforma Linux, (claro aparte del costo, y ademas esta libre de "'virus'")...lo que digo es que yo gasto una licencia de WINDOWS en varias PC que solo van a trabajar un Dia a la semana ( :[ ), por eso estoy migrando, pero eso no es todo, sino que ve probado que con una simple linea de comando puedo imprimir en la impresora fiscal desde puerto USB, si es verdad directamamente sin que tener que configurar nada ni instalar nada en el cliente (bueno siempre tengo que instalar apache para que corra PHP pero eso lo selecciono a la hora de instalar Linux).
y digo que tengo el mismo problema porque yo envio el comando para imprimiir (tal y como lo hago en la consolo/terminal), pero en los LOG de APACHE me figura como ACCESO DENEGADO al puerto... y ese es mi problema ahora estoy tratando de solucionarlo, tengo unas ideas pero tengo que esperar el dia lunes para recien hacer las prubas ya que en mi hogar no cuento con esta dichosa impresora.
Uno de los foros me decia que tenia que poder a apache en el grupo de los admin/root para que tenga privilegios de admin, aunque la teoria diga que eso es un peligro para la informacion (pero como no tengo nada valioso en los cliente....).
Pero aun no he encontrado la solucion... amigos quisas alguno de ustedes ahiga observado algun tema/foro relacionado con esto..
Bueno voy a seguir buscando y publicare mis avances.... Su amigo Sergio Z.
P.D. Suscribance al correo que figura para que esten informados de mis avances...Gracias
----------------------------------------------------
Si confesamos nuestros pecados, él es fiel y justo para perdonar nuestros pecados, y limpiarnos de toda maldad. (1ra JUAN 1:9)... en cualquir lugar esta EL para ayudarte solo levanta tu mirada al cielo y el te ayudara, es en serio.... :]
-----------------------------------------------------
Hola Sergio, muchísimas gracias por tus aportes! son muy buenos y los necesito. Algo te puedo ayudar con respecto a tu problema con Linux + apache + imprimir. Nunca asignes al usuario www-data o apache al grupo root/admin. Es un peligro que puede correr tu sistema. El unico usuario que puede ser root es el mismo root. Con respecto a la impresion, no se como tienes configurada la impresora. Pero si usas CUPS puedes asignar al usuario www-data o apache al grupo CUPS que es el autorizado de imprimir en la impresora. Cual seria el problema de hacer esto? pues cualquiera va a poder imprimir desde tu sitio a la impresora que este conectada. Pues el usuario de apache va a poder hacer esto. Voy a probar de ver otra forma, pero necesito conectar una impresora a mi servidor... y lo mejor seria buscar una que sea fiscal.
ResponderEliminarSaludos Cordiales!
tengo una duda esto solo se puede si la impresora esta conectada al servidor o se puede desde elcliente, como se abriria el puerto donde esta la impresora....
ResponderEliminarHola, tengo un programa de punto de venta web que funciona muy bien pero ahora el cliente ha comprado una impresora fiscal star tsp650 y no entiendo que debo hacer para imprimir alli, lo peor es que yo estoy en Colombia y mi cliente en Panamá, alguien podria ayudarme por favor?
ResponderEliminarEl software esta hecho en php con bd mysql
Ok SANDRA, pero explicame algo de tu sistema como funciona......, ademas tu dices que el cliente a comprado una impresora fiscal, entonces en que impresora imprimia........... Ahh y la distancia creo que no importa.... puedes instalarte algunos programas de control remoto........ Espero tus explicaciones para poder ayudate......
ResponderEliminar-----------------------------------------------
El que no ha amado nunca a conocido a Dios, porque Dios es amor........
Hola, gracias por responder, mi sistema es web y está desarrollado en php y mysql, el cliente imprimia en una impresora comun de punto de venta pero en Panamá es obligatorio ahora imprimir en impresoras fiscales. Yo utilizo la funcion de imprimir del internet explorer del equipo del cliente, tengo claro que ya no puedo hacer esto y debo programar cada comando de impresion desde php pero entre mas investigo mas me pierdo... me puedes ayudar? mi correo es smrro@yahoo.com
ResponderEliminarOk amiga SANDRA
ResponderEliminarMencioname que sistema usas (WIN o LINUX) y ademas que tipo de interface vaz a usar (USB / LPT / COM -SERIAL).
Para asi poder horientarte, tambien si puedes copiar parte del codigo que usas para imprimir, quisas podamos agregar un modulo mas y con eso resvamos el inconveniente.
---------------------------------------------------------
No puede el hombre recibir nada, si no le fuere dado del cielo
Hola hermano mi nombre es Andres y mi correo es happyandres115@hotmail.com, quisiera poder imprimir en windows con una impresora que esta conectada por USB002 a traves de un sistema en php de ticket de factura; ya copie los codigos pero no me manda la impresion, agradeceria mucho tu ayuda, Dios te bendiga , espero tu respuesta.
ResponderEliminarAmigo Andres dime que impresora es (USB / LPT / COM -SERIAL).
ResponderEliminarY si entendiste todo el proceso y no te imprime nada trata de cambiar esta parte
$.post("http://localhost/tosch/reporte/prueba.php",{datos:"pasas algo"});
por
$.get("http://localhost/tosch/reporte/prueba.php",{datos:"pasas algo"});
ya que algunos navegadores no lo soporte, por eso te recomiendo que uses FIREFOX ya que en los ultimos sistemas que estoy desarrollando me va de maravillas.
Su amigo
Sergio Z.
Hola Sergio
ResponderEliminarme funciona perfectamente el codigo, solamente tengo un problema con ie 8 y ie9
estube buscando por ahi y me encontre con que ajax(con jquery) no puede hacer peticiones fuera de su propio dominio entonces me recomendaron que use ajax cross domain , de acuerdo a tu experiencia , tuviste algun problema parecido , y si es asi , como lo solucionaste , (con chrome y ff funciona bien)
Saludos y muchas gracias por compartir tus conocimientos
Perdon no me funciona estube haciendo pruebas en una impresora Hasar y el puerto llego a abrirlo pero despues no hace absolutamente nada.
ResponderEliminarlo estoy probando asi pongo el codigo a ver si un alma generosa se apiada de mi y me da una mano.
en el servidor tengo asi:
function mandar(form)
{
$.ajax({
type:'POST',
url:'http://192.168.1.120:80/cliente.php',
data:{hola:form.txt_nom.value,ip:form.ip.value},
success:function(retorno)
{
alert(retorno)
return false;
}
})
}
y en el cliente donde tengo la impresora lo tengo asi(en esa pc tengo instalado apache y php)
if(($handle = @fopen("COM5", "w")) === FALSE)
{
die('No se pudo Imprimir, Verifique su conexion con el Terminal');
}
$dato = $_POST['hola'];
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,"=================================");
fwrite($handle, chr(27). chr(100). chr(1));//salto de linea
fwrite($handle, chr(27). chr(32). chr(3));//ESTACIO ENTRE LETRAS
fwrite($handle,"PRUEBA 1 ");
fwrite($handle, chr(27). chr(32). chr(0));//ESTACIO ENTRE LETRAS
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(100). chr(0));//salto de linea VACIO
fwrite($handle, chr(27). chr(100). chr(1));//salto de linea
fwrite($handle,"prueba 2");
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(100). chr(1));//salto de linea
fwrite($handle,"PALABRA A IMPRIMIR: ".$dato);
fclose($handle); // cierra el fichero PRN
$salida = shell_exec('lpr COM5'); //lpr->puerto impresora, imprimir archivo PRN
estoy haciendo algo mal pero no doy con la tecla
Saludos y Muchas gracias!!!
Dime. DARIO ESTAS USANDO GET O POST; ademas si imprimes con localhost en una pc en tu LAN o en WAN (INTERNET)
ResponderEliminarhola Sergio los datos los estoy enviando por POST y dentro de la misma LAN (en un post anterior puse todo el codigo que estoy usando)
ResponderEliminary los estoy enviando por POST ya que por GET tengo entendido que apache te limita el envio de valores.
explico como lo estoy haciendo tengo 2 pc llamemosle servidor y cliente y en las dos tengo instalado apache y php, la impresora fiscal esta instalada en la pc cliente y desde esa misma pc llamo al archivo $.ajax({
type:'POST',
url:'http://192.168.1.120:80/cliente.php',
data:{datos:form.txt_nom.value,ip:form.ip.value},
success:function(retorno)
{
alert(retorno)
return false;
}
})
me llega a abrir el puerto pero nunca imprime , estoy usando exactamente el codigo que pusiste mas arriba (prueba.php)
Saludos y Muchas gracias
amigos no logro alinear los textos en el txt...
ResponderEliminarde que forma puedo alinear por columna los precios uno debajo de otro sin perder la alineacion...
a pesar de usar la funcion str_pad() como lo comentan lineas arriba... no me salen!!!
ayudaaaaa
Amigo Peter Developer me podrias indicar por favor en simples pasos como lograste aunque sea llegar hasta ahi ya que estoy siguiendo los pasos que dicen mas arriba y no logro hacer funcionar la impresora fiscal
ResponderEliminarTe lo voy a agradecer un monton
saludos!!!
Dario este es el codigo que utilizo para imprimir la cabecera de la factura!!!!
ResponderEliminarpero no logro cuadrarlos, que se ubiquen en la misma columna sin perder la alineacion vertical.
$nombre_archivo = 'reporteFactura.txt';
Eliminarfopen($nombre_archivo, 'a+');
if (is_writable($nombre_archivo)) {
if (!$handle = fopen($nombre_archivo, 'a')) {
echo "No se puede abrir el archivo ($nombre_archivo)";
exit;
}
fwrite($handle,chr(13).chr(10));
fwrite($handle,chr(13).chr(10));
fwrite($handle,chr(13).chr(10));
fwrite($handle," ".$fecha_emision);
fwrite($handle,chr(13).chr(10));
fwrite($handle,str_pad(" ".$razon_soc,100,' ',STR_PAD_RIGHT));
fwrite($handle,$serie."-".$numero);
fwrite($handle,chr(13).chr(10));
fwrite($handle,str_pad(" ".$direccion,100,' ',STR_PAD_RIGHT));
fwrite($handle,$condicion);
fwrite($handle,chr(13).chr(10));
fwrite($handle,str_pad($ruc,100,' ',STR_PAD_LEFT));
fwrite($handle,chr(13).chr(10));
fwrite($handle,str_pad($oc,100,' ',STR_PAD_LEFT));
Muchas gracias amigo Peter Developer voy a probar con el codigo que me facilitaste
EliminarSaludos!!!
Si tienes la aplicacion en el servidor Web, como lo solucionas amigo, ya que el server no ve la impresora, y no puedes instalar mil impresoras en el server.
ResponderEliminarMi problema surge con fpdf y la bixolon, ya que cuando mandas el pdf, sale , pero no se lee
gracias por la ayuda
Amigos, despues de tanto batallar he logrado, crear el archivo TXT desde php y ademas enviarlo automaticamente a la impresora matricial, en mi caso EPSON LX-300+ para imprimir en una factura preimpresa con el formato de cualquier otra factura.
ResponderEliminarsi desean que los ayude envienme un correo a peterccp85@gmail.com
tratare en lo posible de ayudarlos.
slds,
me podrías ayudar como se hace?
EliminarAmigo anonimo... la Bixolon es una impresora de punto y no lograras mejorar la impresion si lo envias desde un PDF... te recomiendo busques otra solucion enviarlo desde un TXT. slds,
ResponderEliminartambien necesito imprimir a una ticketera bixolon con php... e probado y efectivamente desde pdf sale pesimo... me podrias ayudar como mandarlo desde un txt... :S porfavor...
EliminarTengo un problema parecido y he pensado en crear un .txt en el lado del cliente,este al dar click generaria una consulta y guardaria dichos resultados en un txt (ando viendo si se puede guardar del lado del cliente un .txt) y en el mismo evento al dar clik, al teminar la consulta y guarde , este llame a este archivo creado para imprimirlo en una Generic /Text Only , impresora usb, lo normal como siempre .no se si me puedan ayudar mi correo es fharid120@gmail.com. Saludos Cordiales
ResponderEliminarAmigo Fharid que sistema operativo vaz a usar para el cliente, ademas deseo saber si va ahaber otro tipo de impresoras
ResponderEliminarSistema Operativo Windows, esa impresora habra en cada sucursal. hasta ahora ya hago que guarde la consulta en un .txt con el formato del ticket , pero aun no logro que imprima la ruta determinada donde se encuentra guardado el .txt
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarHola estaba usando windows 7 y usava este codigo para imprimir mis sticker
ResponderEliminarNET USE LPR: \\COMA1\ZebraS4M /user:administrador+dominio pasword
PRINT archivo.PRN
NET USE LPR: /delete
esto en un archivo.bat que con php ejecutava super facil ahora el detalle es que me pace3 a linux suse 12.1y no logro por ningun motivo hacer que mis sticker lleguen a la impresora alguien sabe como hacerlo se los agradeceria
Gracias
Como vas com tú problema amigo
EliminarComo vas com tú problema amigo
EliminarHe intentado con link rel="alternate" media="print" href="version-imprimir.doc" /> pero no funciona lo he visto en http://norfipc.com/inf/javascript-imprimir-area-parte-pagina-web.html
ResponderEliminarhola como estan, me interesa mucho este tema, debido que me lo estan pidiendo en la compañia en la que trabajo, hice lo que pablo calvo dijo y salió todo perfecto, el problema es que lo que necesito imprimir es de indole fiscal (es para facturar) y con solo mandar a imprimir las ráfagas no me es suficiente, no se si esto es posible a través de la programación Web (php y co.) o si hay una manera de realizarlo, con los comandos de la impresora, que por cierto uso bixolon y epson, si pudieran ayudarme se los agradeceria
ResponderEliminarHola, muy bueno lo tuyo. Todavia no lo probe con una impresora de Ticket, pero si con una epson chorro de tita.
ResponderEliminarLes cuento como logre imprimir directamente:
Deshabilite el puerto LPT1 en el administrador de programas.
lo redireccione con NET USE LPT1: \\localhost\NOMBRE_de_la_impresora_compartida
A tu codigo le cambie: COM% por LPT1 ylogre imprimir directamente en la impresora. Espero que le sirva a alguien
Hola Sergio, espero aun estes pndt de esta página. Te comento soy estudiante de ingenieria de sistemas y tengo un proyecto para controlar la facturación hotelera con diferentes puntos de venta, pero no he logrado imprimir mis facturas en la bixolon spr 280, y en verdad solo me se manjear en PHP, me podrias explicar con un ejemplo muy sencillo la forma de imprimir desde mis POS(clientes). Cabe decir que toda la información que voy a imprimir ya la tengo en mi base de datos, solo necesito imprimirla en mi BIXOLON.
ResponderEliminarTe agradezco de antemano.
Hola, mi pregunta es si este codigo puede funcionar con TIKEADORAS FISCALES HASSAR, es la mas usada aqui en Argentina
ResponderEliminarSaludos.
AMIGOS JJ y ANONIMO
ResponderEliminarSobre el ejemplo sencillo es el de arriba... pero explicame mas sobre tu duda para poder ayudarte, yo tambien me demore en encontrar la forma correcta de imprimir en estas impresoras ya que si se usas como las otras impresoras que instalas sus driver y luego haces un WINDOW.PRINT()... si imprime pero muy lento (dibuja las letras y/o graficos)
Y lo que nosotros buscamos en que imprima el texto directo y rapido... amigo JJ dime que puerto tiene tus impresoras... ya que las que yo uso son USB pero la misma BIXOLON 270 tiene un programa para emular el PUERTO COM desde USB... por eso mi programacion abre el puerto COM y ahi le envio todo los datos...
Con respeto a alas TIKEADORAS HASSAR... tendria que ver sus comandos ESP/POS para ver si son iguales a las de las BIXOLON ya que son las unicas que tengo corriendo unos sistemas (he usado BIXOLON 270, BIXOLON 350 [papel termico], LX 300 [muy poco pero bien])... y biendo los codigos son muy similares .... dime si tu impresora emula la configuracion de otra... un ejemplo la IMPRESORA BIXOLON emula ser una EPSON... y las IMPRESORAS START tambien tienen esa opcion ... creo
Bueno amigos les ayudare... pero quisas un poco lento ya que estoy con dos sistemas en proceso....
Espero compartir mis conocimientos y tambien aprender de ustedes ya que en un par de meses voy a ser mi tesis para mi titulo TECNICO .... si recien tecnico (6 ciclos instituto) ... y de ahi a nivelarme con alguna UNIVERSIDAD ....
BUENA SUERTE... AHI NOS VEMOS
No encuentro ese emulador... :( me puedes ayudar... tambien tengo una ticketera bixolon 270 ... es dificil de configurar?? :/ ojala puedas ayudarme!
EliminarHola tengo una impresora EPSON T22 Series por USB, local y estoy tratando de realizar una impresion sencilla con este codigo
ResponderEliminarif(($handle = @fopen("ARCH", "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(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,"=================================");
fwrite($handle, chr(27). chr(100). chr(1));//salto de linea
fwrite($handle, chr(27). chr(32). chr(3));//ESTACIO ENTRE LETRAS
fwrite($handle,"Prueba");
// cierro el archivo a imprimir
fclose($handle);
//imprimir
$salida = shell_exec('USB001 ARCH');
pero no hace nada que podria ser?
Gracias
Muchas gracias Sergio, ya pude imprimir, lo que me pasaba era por el "net use" aun no lo tenia redireccioando el puerto USB al lpt1, pero ya funciona perfecto. De nuevo muchas gracias y hasta la proxima.
ResponderEliminarGracias a ti por publicar tus resultados,... pero ahora te toca ayudar a otros... asi es que publica tu solucion ... (quisas aqui :) )... Un abrazo
EliminarHola soy rrigo queria saber si tienes algun codigo para imprimir con php para este modelo de impresora fiscal CR68AF
ResponderEliminarHola rrigo
ResponderEliminarLa verdad que desconozco ese modelo, busca en el manual, quizás existe unos códigos de ejemplo... pero dime con que programa esta funcionando el la actualidad... pégate un poco del código para ver...
Amigo también he intentado hacer lo mismo que piensas (spooler)... pero no he tenido el tiempo para aprender un nuevo lenguaje.. digamos vb... ya que estoy ocupado en estos momentos.... otra razon es porque estoy migrando a trabajar netamente con LINUX (ya sabes por licencia y por los virus)... y ahi no se si funciones los OCX... Si sabes algo sobre los spooles, me gustaria saber... Gracias
ResponderEliminarAmigo, tengo algunas dudas al respecto
ResponderEliminarla primera, mi servidor esta alojado en linux y el cliente en windows existiria algun problema?.
la segunda yo tengo que imprimir varios cupones, por lo que no se si seria mas factible primero en el servidor crear el archivo y desde el cliente simplemente enviar a imprimir con exec_shell(), bueno nose si se pueda realizar este tema.
la tercera es que tengo que imprimir un logo de la empresa, que tendria que hacer en este caso (este logo depende de si quiere el cliente o no)
Gracias
1º no hay problemas... yo tambien lo uso asi
Eliminar2º Bueno yo le paso los datos del servidor por JSON al cliente... y el cliente al recibir estos datos ya genera la factura... ya que ya esta programado el modelo.
3º Eso si es un verdadero problema... bueno x mi parte... ya que yo solo he logrado enviar texto plano... aunque se puede crear caracteres con un poco de programacion... si el logotipo no es muy complejo creo que lo puedes crear con programacion... pero se hace pixel por pixel... suerte...
como puedo imprimir en una impresora epson desde pho zxeveroxz. Tengo un hosting privado en internet esta en linux ayuda por favor.
EliminarGracias.
Este comentario ha sido eliminado por el autor.
ResponderEliminarbuen aporte zxeveroxz me fue muy util. pero tengo una pregunta
ResponderEliminarcomo hacen para imprimir ñ o letras acentuadas(caracteres especiales) ?
resolviste los caracteres especiales
EliminarBuenas noches, necesito que me den una orientación para imprimir ticket desde php con mysql en una impresora tickera epson.
ResponderEliminarMi pagina esta alojada en un servidor linux.
Gracias por su ayuda
Resien vuelvo de pues de tiempo, escriban sus dudas para poderles ayudar... ya sean las mismas... pero esccribanlas, ya que algunas de arriba ya tienen solucion por ustedes mismos...
ResponderEliminarBuenas noches, necesito de tus conocimientos tengo una pagina web que necesito imprimir desde el puerto LPT1. La pagina esta alojada en un servidor remoto en linux. Y las maquinas locales usan windows xp.
EliminarHola! necesito imprimir en una tiketera bixolon en win xp o win 7 e probado desde una pagina web y luego desde un pdf y sale fatal(los textos)... sin embargo desde un txt si sal bien! me podrías ayudar a imprimir desde un txt o quisa debo elegir un tipo de fuente... ah y no encuentro ese emulador q mencionas para q imprima por el puerto del usb... :S ojala me ayudes... DESDE YA GRACIAS!
EliminarHola!, me alegro mucho de que hayas vuelto.
ResponderEliminarMi pregunta mas de alguno la planteado aquí pero sigue sin respuesta aun.
¿La impresora necesariamente debe ir en el servidor?, ya que en mi caso contrate para mi aplicación un hosting que geográficamente podría estar en cualquier parte del mundo. La impresora necesariamente debe ir en el cliente, y en ese caso como se hace para que imprima, ¿que comando se utilizaría?
Saludos
y gracias por este blog que es unico en internet!
UN SALUDO A TODO.
ResponderEliminartengo una bixolon 270 (TICKETERA con corte automatico)(CONECTADO A UN PUERTO USB).
con el siguiente codigo me imprime normal (en PHP)
pero antes en el PHP.ini
active el ";extension=php_printer.dll"
quitando ";" osea "extension=php_printer.dll"
PROBLEMA:
EL DETALLE ES QUE NO ME CORTA EL PAPEL AL TERMINAR LA IMPRESION (DEBERIA HACERLO)
YA LLEVO 2 DIAS Y NAHA
AYUDA...!
BUENO EL CODIGO NO APARECIO AKI TA:
ResponderEliminar$handle = printer_open("BIXOLON SRP-270");
printer_write($handle, "IMPRIME TEXTO");
printer_close($handle);
Hola, esto es de gran ayuda, tengo una pregunta. Con esta solucion, yo tengo el server en godaddy y la impresora en varios restaurants, eso implica que en cada impresora que tengan instaladas sus impresoras tengo que agregar el archivo prueba.php y corriendo php + apache en esas computadoras. Es correcto lo que digo ?
ResponderEliminarY desde ya muy bueno tu aporte
En el caso de Gaguito yo hago lo siguiente: en el servidor genero un archivo de texto y le pongo una extensión especial, por ejemplo, qqq. Luego hago que la página descargue ese archivo, hasta ahi nada nuevo. En la pc cliente se debe configurar para que al descargar o abrir archivos del tipo qqq se utilice un comando como PRINT.EXE o un batch hecho a la medida. El trabajo estará en configurar las estaciones clientes pues en algunos casos las impresoras fiscales estarán conectadas a puertos lpt, en otras a COM y en otras a USB.
EliminarHola Amigos!!!
ResponderEliminaralguien seria tan amable de indicar PASO POR PASO como hacer para imprimir en una fiscal desde php y ajax
(hay que instalar algun driver?
de donde se consigue dicho driver?)
estube haciendo pruebas con el codigo que dejo el amigo Sergio Zegarra pero sin resultados positivos
Saludos Y muchas gracias
buenas tardes trabajo con un programa basado en dos y tengo el problema que las impresoras epson lx300 que tenemos son puerto usb nada mas al igual que la pc de escritorio biene solo con puertos usb bueno la impresion lla logre con exito el problema que tengo es que en el punto de venta donde hay que ingresar datos de clientes con Ñ no muestra la Ñ en la factura fisica sino que imprime con codigo ascii pero solo para con impresoras matriciales y no con impresoras laser ya que el dos2usb permite redireccionar el puerto de impresion sin problema al usb pero como debo de configurar mi dos2usb para que me imprima la Ñ en matricial
ResponderEliminarTengo una impresora epson, en la cual necesito imprimir un archivo .txt generado con php a partir de los registros de una tabla en mysql, todo norma:
ResponderEliminarla generacion del archivo .txt a partid de pahp y msql normal.
la impresion del archivo de texto desde php normal
el problema radica que auqnque es el archivo de texto este bien escrito al momento d eimprimir la ñ no la reconoce y piunta caracteres extraños, alguna idea como solucionar el presente impase, estoy tratando d eimprimir con php_printer, aqui la porcion de codigo:
$fh = fopen($nombre_archivo, "rb");
//$content = fread($fh, getRemoteFileSize($nombre_archivo));
$content = fread($fh, filesize($nombre_archivo)); //filesize
fclose($fh);
printer_set_option($ph, PRINTER_MODE, "RAW");
printer_start_doc($ph, "My Document");
printer_start_page($ph);
printer_write($ph, $content);
printer_end_page($ph);
printer_end_doc($ph);
printer_close($ph);
Estimado, Gracias por tu aporte!!
ResponderEliminarif(($handle = @fopen("COM1", "w")) === FALSE){
die('No se puedo Imprimir, Verifique su conexion con el Terminal');
}
Esta sentencia funciona perfectamente si tengo conectada la TMU220 al puerto local COM1.
Como hago para imprimir a una impresora de red ( Una TMU220 conectada en otra PC ) y compartida. Por EJ: \\PC\TMU220 o \\192.168.1.100\TMU220
Si desde la pc que esta funcionando el Apache haces DIR > \\PC\TMU220 funcionan perfectamente.
Javier Martinez de Treviño, javiergmt@gmail.com
Gracias Amigo!!
Javier, te explico resumido:
ResponderEliminar1.- Comparte la impresora en red con un nombre sin espacios ejm NOMIMP.
2.- en el servidor donde esta el instalado el sistema hay que emular el puerto de la impresora, abres la consola de comandos(CMD) con permisos de administrador y digitas lo siguiente: NET USE LPT1 \\IP_DE_PC\NOMIMP
presionas enter.
3.- abres nuevamente la consola y digita lo sgte: DIR > LPT1
esto deberia imprimirte.
Espero esto te pueda ayudar.
Sdlds
PeterDeveloper
peterccp85@gmail.com
Me parece excelente los comentarios, pero to estoy intentadandolo con un puerto paralelo que debo cambiar en el primer código ejemplo muchas gracias
ResponderEliminarHola he intentado usar lo siguente:
ResponderEliminarexec('c:\WINDOWS\System32\cmd.exe /c START c:/Appserv/www/imprime.bat');
y no imprime nada el bat lo tengo en ese directorio y el contenido del bat es el siguiente:
@TYPE passw.txt > LPT1
el archivo passw.txt se encuentra en el mismo directorio que el bat.
Por lo que veo es en la ejecución del bat, PHP no deja que se ejecute correctamente. ¿Alguien puede ayudarme?
Hola compañero
ResponderEliminarEspero que me puedas ayudar, tengo que hacer una impresion directa, sin que me abra el windows.open normal, el objetivo es que el cliente no seleccione la impresora ni que seleccione el numero de copias, algo asi como cuando quieres imprimir un tiket
El ambiente es web, hecho en php.
Hola a todos, simplemente felicitaros por vuestra aportación y a Sergio por el Blog.
ResponderEliminara final de cuentas y despues de tanto show, como es el codigo para la impresion desde php a una impresora alojada en el cliente?
ResponderEliminargracias
Hola, soy nuevo y tambien quisiera saber como mandar a imprimir desde PHP a punto de venta, algun ejemplo sencillo que podrias aportar, gracias!!
ResponderEliminarhola soy nuevo al igual que felix y me gustaria saber como crear e imprimir un ticket, estoy realizando un punto de venta y necesito extender un ticket al cliente, estoy utilizando una impresora EPSON TM-T20 de interfaz usb. les agradecieria mucho que pudiera apoyarme con un ejemplo sencillo de como realizarlo con php Gracias.
ResponderEliminarHola, pude imprimir desde php utilizando otra táctica aun así funciono jeje aunque no es lo ideal por el momento sirve, mi problema es la ejecución de la función shell_exec(); de php ya que por los permisos que tiene apache en windows bloquea la correcta ejecución
ResponderEliminarPD: en la semana siguiente estaré haciendo la impresión con la TM-T20, espero tener el tiempo para arreglar mis problemas de ejecutar los el .bat desde PHP, cualquier cosa dejo mi correo ivan_gba@hotmail.com para compartir ideas
ResponderEliminarHola, tengo un problema el sistema que utilizo esta desarrollado en LAMP, y e utilizado Cups para imprimir las transacciones en las imp. matriciales de las cajas, pero ahora necesito migrar a las impresoras TMU EPSON 990- que imprimen libretas y recibos, CUPS no tiene driver para ello, que puedo hacer..
ResponderEliminarLa impresora es una Bixolon Epson TM-U950 impresora de tickets y slip matricial y necesito que pueda imprimir directamente en la matricial.
ResponderEliminarHola buenas tardes a todos, estoy imprimiendo en punto de venta pero no me alinea nada de lo que quiero imprimir, gracias!
ResponderEliminarHola estimados!
ResponderEliminarMe gustaría saber (como comentan arriba) hacer que el server genere un .txt y al descargarlo lo abra con un PRINT.EXE o un .bat.
Me interesa saber como hacer el PRINT.EXE o el .bat pues no tengo mucho conocimiento sobre eso. Gracias
hola gracias por el aporte me funciona todo bn en local pero en el servidor no hace nada
ResponderEliminarBuenas tardes a todos, les comento: las soluciones que indican las he aplicado todas a la impresora EPSON LX-350 que tiene conexion USB:
ResponderEliminar1º He adquirido un cable conversor paralelo-usb.
2º He conectado la impresora, y la dejo con el driver por defecto EPSON lx-350 ESC/P, porque colocándole en Generic, no funciona.
3º He compartido en red la impresora con el nombre 'EPSON'.
4º He simulado el puerto lpt1 mediante una sentencia en MSDOS:
@NET USE LPT1: \\USER-PC\EPSON /PERSISTENT:YES
5ºHe modificado el ficher php.ini de manera que:
-Safe_mode = off
-Safe_mode_include_dir = on
6º En services.msc, he dado permisos de interacción a apache
7ºMediante PHP he creado un archivo (pru.TXT) que tiene todo el doc a imprimir:
9ºDesde mi página php, hago la siguiente llamada para la impresion:
exec("print /D:LPT1 d:\\wamp\\www\\venta\\pru.txt");
PERO NO IMPRIME: sale el error "No se puede inicializar el dispositivo LPT1"
Debido a este problema decidí prestar un impresora LX-300 y con las mismas configuraciones y adaptador paralelo-usb, si imprimió.
Pero cuando vuelvo nuevamente a la LX-350 NO IMPRIME NADA, no sé si será por la impresora, pero es nueva, así que no sé que más podría ser.
Por favor es urgente que lo haga imprimir en la Impresora LX-350, si alguien me puede brindar alguna sugerencia.
De antemano, muchas gracias.
hermano disculpe pero no entiendo, necesito imprimir un archivo txt con cualquier impresora cuales son los requisitos???
ResponderEliminarhola a todos, tengo en internet un servidor linux redhat, con un sistema de facturacion web en php y mysql , desde la estacion del cliente en windows xp y windows 7 nesecito imprimir la factura sobre un formato de factura, en una impresora matricial epson lx-300 II, con cable usb pero me imprime desfasado, letras grandes , asi le cambie el tamaÑo, pero igual , no imprime bien... en cambio en una laser si imprime bien...
ResponderEliminarcomo hago para cuadrar la factura, genere un archivo pdf pero no imprime bien, genere una pagina en html y lo mando a la matricial pero igual tampoco imprime bien y se descuadra del formato.... como hago para que la impresion sea buena y no se descuadre....___??? gracias por sus respuesta.
Buenas Tardes, estoy trabajando con una ticketera-facturadora marca BIXOLON, y de pronto ha comenzado a imprimir las letras muy pequeñitas, Por Favor como puedo hacer para agrandarlas. Gracias.
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarEstimados, para impresoras USB, basta con compartirlas en red y en el script que Sergio publico en pruebas.php, basta cambiar COM5 por el recurso compartido, en mi caso es:
ResponderEliminarif(($handle = fopen("\\\\localhost\\TMT81", "w")) === FALSE){ ...etc
Donde TMT81 es el nombre que le di a la impresora compartida.
Funciona de maravilla ;)
Saludos!
Este comentario ha sido eliminado por el autor.
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarBuenas mi problema es el siguiente, primero a la hora de correr este codigo
ResponderEliminarmy_ip = $_SERVER['REMOTE_ADDR']; // Solo aplica para servidores Apache, de lo contrario tiene que establecercela
$this->my_port = getservbyname('www', 'tcp'); //Puerto 80 por default
}
//Funcion que envia un comando por protococolo TCP/IP y retorna un arreglo de palabras de repuestas
public function sendCmdTcp($cmd)
{
$this->array_rep = null;
error_reporting(E_ALL);
/* Obtener el puerto para el servicio WWW. */
$service_port = $this->my_port;
/* Obtener la dirección IP para el host objetivo. */
$address = gethostbyname($this->my_ip);
/* Crear un socket TCP/IP. */
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
return "socket_create() falló: razón: " . socket_strerror(socket_last_error()) . "
";
}
$result = socket_connect($socket, $address, $service_port);
if ($result === false) {
return "socket_connect() falló.\nRazón: ($result) " . socket_strerror(socket_last_error($socket)) . "
";
}
$out = '';
/*Enviamos el comando o peticion al Fiscal printer por via TCP*/
socket_write($socket, $cmd, strlen($cmd));
$ite = 0;
while ($out = socket_read($socket, 2048)) {
$this->array_rep[$ite] = $out;
++$ite;
}
socket_close($socket);
return $this->array_rep;
}
}
?>
pero me dice q tengo un error en el socket y no entiendo porq.
Hola, como andan!, la verdad esta muy interesante....
ResponderEliminarLes comento.:
tengo una impresora fiscal Epson TM-U220AF II.... la cuestión que conecte por un cable USB, estoy utilizando windows XP... a su vez, estoy armando un sistema en PHP, la cuestión que no puedo hacer imprimir, mire muchos tutoriales, y demas no se como hacer, si alguien me puede dar una mano! el tema de configuración de la impresora con la pc por USB les agradecería!
Este comentario ha sido eliminado por el autor.
EliminarSi se puede amigo, yo también estuve con dolores de cabeza con este tipo de impresoras, hasta que este post me ayudo muchisimo, gracias a Sergio Zegarra por haberlo publicado y seguir ayudando a los que necesitamos orientación.
EliminarDebes primero compartir tu impresora (te recomiendo ponerle un nombre corto al recurso de red) y luego ejecutar el comando ms-dos:
net use lpt1: \\nombre_de_equipo\nombre_impresora_compartida /persistent:yes
Luego ejecuta el codigo, yo hice pruebas directamente ejecutando el archivo prueba.php con este codigo en servidor local con xampp (nota cambiar COM5 por LPT1) y funciona perfectamente, espero te ayude:
/**
* @author ZEGARRA CORNE, Sergio
* @copyright 2009
*/
if(($handle = @fopen("LPT1", "w")) === FALSE){
die('No se puedo Imprimir, Verifique su conexion con el Terminal');
}
$dato = $_POST['datos'];
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,"=================================");
fwrite($handle, chr(27). chr(100). chr(1));//salto de linea
fwrite($handle, chr(27). chr(32). chr(3));//ESTACIO ENTRE LETRAS
fwrite($handle," ORDEN No 1005 ");
fwrite($handle, chr(27). chr(32). chr(0));//ESTACIO ENTRE LETRAS
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(100). chr(0));//salto de linea VACIO
fwrite($handle, chr(27). chr(100). chr(1));//salto de linea
fwrite($handle,"RESTAURANT LEGENDS SPORTS");
fwrite($handle, chr(27). chr(100). chr(1));//salto de linea
fwrite($handle,"=================================");
fwrite($handle, chr(27). chr(100). chr(3));//salto de linea
fwrite($handle,"PALABRA A IMPRIMIT: ".$dato);
fwrite($handle, chr(27). chr(100). chr(6));//salto de linea
fwrite($handle, chr(29). chr(86). chr(1));//corta hoja automaticamente
fclose($handle); // cierra el fichero PRN
$salida = shell_exec('lpr LPT1'); //lpr->puerto impresora, imprimir archivo PRN
Y nuevamente GRACIAS SERGIO por tu valioso aporte!
Hola a todos, veo que ha sido un tema bastante candente, porque los posts siguen.
ResponderEliminarTengo el siguiente inconveniente:
Tengo un reporte en el servidor en Crystal Report, y quisiera poder enviarlo a imprimir a una impresora de un cliente. La impresora es una EPSON LX-300+. Normalmente cuando los reportes los envío a una impresora láser he trabajado el siguiente código que me permite exportar el Crystal a PDF y luego desde el browser envío la impresión, pero ahora al tratarse de una matricial, la impresión se ve espantosa.
Trabajo en PHP con un COM para poder usar el objeto de Crystal.
//objeto cristalreport
$crapp = new COM("CrystalRuntime.Application") or die ("Error on load");
$creport = $crapp->OpenReport("C:\\wamp\\www\\OPERACIONES\\facturas\\report\\rpFacturaNuevo03.rpt", 1);
$oDB = $creport->Database();
$ocDBT = $oDB->Tables();
$oDBT = $ocDBT->Item(1);
$creport->EnableParameterPrompting = 0;
$creport->DiscardSavedData();
$creport->ReadRecords();
$creport->ParameterFields(1)->AddCurrentValue ("$vgcUsuario");
$my_pdf = "C:\\wamp\\www\\OPERACIONES\\facturas\\report\\rpFacturaNuevo.pdf";
$creport->ExportOptions->DiskFileName=$my_pdf;
$creport->ExportOptions->FormatType=31;
$creport->ExportOptions->DestinationType=1;
$creport->Export(false);
print "";
He estado cambiando el código, y en vez de exportar lo imprimo, pero no funciona:
$creport->SelectPrinter ("usbprint", "\\192.168.1.2\EPSON LX-300+", "Ne01:");
$creport->PaperOrientation = 0;
$creport->PrintOut(false);
¿Qué puede estar fallando?
Gracias por sus aportes,
Buenas tardes, pongamos las bases:
ResponderEliminar- los pcs cuentan con puerto lpt1 o en su defecto usb(se utiliza un convertidor)
- el servidor apache (el que sea appserv, xampp, etc) esta corriendo
- el archivo a imprimir.php ya tiene el listado o texto volcado con comandos php
- se han tomado en cuenta las medidas de seguridad (deshabilitadas para este efecto de impresion)
siguiendo estos pasos aún no logro imprimir. alguien me pueda dar una mano??
desde ya gracias por su atención
Atentamente
jef
si estas en con SO Linux tienes que dar permisos al puerto USB en este caso seria asi
Eliminar#sudo chmod -R 777 /dev/usb/lp0 ... lp0 es el uno de los puertos USB activos.. puede ser mas de 0
En algunas versiones puede que el puerto se muestre asi: /dev/usblp0/... lo cual se usaría el mismo comando anterior para darle permiso de escritura y ejecución...
Buenas noches. Primero felicitar al autor (Sergio Zegarra) y a algún otro por ahi por su magnífico trabajo que me ha resultado muy útil.
ResponderEliminarMi problema es el siguiente:
Imprimo bien, literales, variables, saltos de linea, negritas, tamaño de letra, etc. pero al intentar imprimir una simple ñ, á, é, í, ó, ú aparecen símbolos extraños y no hay forma de que la impresora los reconozca. He leído el manual (la parte correspondiente a las tablas de caracteres) y no consigo que se impriman correctamente... ¿Alguien tiene la solución?
¡Muchas gracias!
Buenas noches y felices fiestas
EliminarMe respondo a mí mismo:
Hacen falta 2 instrucciones.
1 - fwrite($handle, chr(27). chr(116). chr(16));
2.- $variable = iconv('UTF-8','ISO-8859-1//TRANSLIT',$variable_a_convertir);
Espero que le sirva a alguien de ayuda. :)
como haces para cambiar el tamaño de letra?... me seria muy util el comando para esa acción
EliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarAlguien sabe los comandos de impresión en PHP para una impresora HASSAR?
ResponderEliminarBuenas tardes, me gustaría saber como poder utilizar una impresora bixolon srp350 que tiene interfaz serie db25, con una cable db25/rj45. Saludos, Moisés.
ResponderEliminarYa que ejecuto el driver de la web oficial de la marca, pero me marca a elegir puerto serie(com1..4), y mi ultrabook no posee esos puertos. Las personas que me lo facilitaron tenían una instalación pc+rj45+rj45+router+rj45+db25+bixolon.
ResponderEliminarPuedes usar un emulador de COM a USB o viceversa... las impresoras Bixolon vienen con una utilidad que emula puertos COM, es decir todo lo que envíes al puerto USB esta utilidad lo reenvia al puerto COM virtual...
ResponderEliminarsALUDOS E ESTADO CONECTANDO UNA IMPRESORA NCR TICKET, pero no atino a impirmir. por defecto es usb, segun tu codigo genero un archivo pero alm momento de jectar el shell_exec(lpr USB)
ResponderEliminarno me funca, podrias ayudarme
Estas en entorno linux o windows...???
EliminarSi fuese linux seria muy facil: cat archivo_a_imprimir.txt > /dev/usb/lp0
Claro que al /dev/usb/lp0 tienes que darle todos los persmisos para que el apache lo pueda ejecutar
sudo chmod -R 777 /dev/usb/*
Si es en windows puedes probar net use lpt1: \\nombre_de_equipo\nombre_impresora_compartida /persistent:yes
Espero a verte ayudado, para mas consulta sigue escribiendo....
Que tal Sergio?
ResponderEliminarTe pregunto, estos comandos que se le envian a la impresora son comandos universales?
Cualquier impresora fiscal puede funcionar con estos comandos?
O depende de la marca?
Saludos
La mayoria de impresoras emulan los comandos esc de las Epson... yo he tenido problemas con los comandos de las Impresoras Star... Los comandos mas basicos y donde hay mayor informacion son los de Epson... Puedes buscar en google como comandos de esc/pos de impresoras fiscales o tiqueteras
EliminarHola Sergio, gracias por compartir tus conocimientos. Tengo una consulta: Es posible mandar a imprimir una imagen específica en este tipo de impresoras? No me refiero a un logotipo que se graba en la memoria de la impresora para todas las impresiones, sino en mandar una imagen diferente en cada impresión. Tendrás idea de como hacerlo? Muchas gracias de antemano por tu ayuda.
ResponderEliminarAquí te dejo la clase que te puede ayudar
Eliminar/**
* Classe per creazione di stringhe formattate
* per essere stamapate su pos.
*
* @version 1.0.0
* @author Alessandro Sarzina - Francesco Falanga
*
*
* USAGE EXAMPLE:
* $esc=new EscPos("it",858,"àèìòù€","\x7B\x7D\x7E\x7C\x60\xD5"); // initialize and select country, codepage and extra char trasformer string
* $esc->align("c"); // central align
* $esc->font(false,true,false,true,true); // select bold, tall and large font
* $esc->text("TITLE TEST");
* $esc->font();
* $esc->align(); // left align
* $esc->text("Text test");
* $esc->cut(30); // 30 spaces and paper cut
* $to_printer=$esc->out(); // get the generated string
*
*/
/**
* Print a image from a file
*
* @param $filename string to the filename
* @return false if an error occured
*/
public function imageFromFile($filename){
$img=false;
$info = @getimagesize($filename);
if(!$info) return false;
switch($info[2]){
case IMAGETYPE_GIF : $img=imagecreatefromgif($filename); break;
case IMAGETYPE_JPEG : $img=imagecreatefromjpeg($filename); break;
case IMAGETYPE_PNG : $img=imagecreatefrompng($filename); break;
case IMAGETYPE_WBMP : $img=imagecreatefromwbmp($filename); break;
case IMAGETYPE_XBM : $img=imagecreatefromwxbm($filename); break;
}
return image($img);
}
/**
* Print a image stored in NV memory
*
* @param $id int image address in NV
*/
public function imageNV($id){
if(!is_int($id) || $id<1 || $id>255) return false;
$this->out.="\x1C\x70".chr($id)."\x0";
}
/**
* Print a image from a resource
*
* @param $img resource of an image (GD)
* @return false if an error occured
*/
public function image($img){
if($img===false || !is_resource($img)) return false;
$xH=floor(ceil(imagesx($img)/8)/256);
$xL=floor(ceil(imagesx($img)/8)-$xH*256);
$yH=floor(imagesy($img)/256);
$yL=floor(imagesy($img)-$yH*256);
$img_string="";
$count=0;
for($y=0;$y=$img_width){
$color=0;
}else{
$rgb = imagecolorat($image, $x, $y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
$gs = (($r*0.299)+($g*0.587)+($b*0.114));
if($gs>150) $color=0;
else $color=1;
}
$str=$str.$color;
if($x%8==7) $img_string.=chr((int)bindec($str));
$count++;
}
}
$this->out.="\x1D\x76\x30\x0".chr($xL).chr($xH).chr($yL).chr($yH);
$this->out.=$img_string;
}
Cuando la termine probar completamente voy a publicarlo con el uso de esta libreria para poder imprimir en impresoras termicas y/o matriciales desde php
https://code.google.com/p/comm-alpha/source/browse/trunk/commander_alpha/php_print/test/EscPos.php?r=202
Hola Sergio, estoy intentando imprimir en una Epson TM U220, se conecta al puerto LPT1 de mi maquina, y con el codigo que colocas solo se puede si se conectara a COM1... Como puedo resolver ese problema de impresion? He buscado en google y según dicen es dificil xq php no es compatible con ese puerto.
ResponderEliminarPara los que aun tengan problemas con la impresion:
ResponderEliminarEl problema que tienes es @fopen("USB001", "w")), si estas trabajando con windows no te va reconocer el puerto USB***, para dar solucion a esto hay varias formas:
Una de ellas es tener un programa que virtualize el puerto COM5, es decir todo lo que le envies al puerto virtual COM* lo pasara al puerto USB*, el cual este puerto USB debe haber sido instalado con sus driver con el que viene la impresora...
Otra es instalar la impresora con el driver generico TEXT/Generic, despues compartirla impresora instalada, por ejemplo "termica1", entonces el codigo quedaria asi : -- @fopen("\\localhost\\termica1", "w")) --, claro que esto solo funciona de la misma pc donde esta instalada la impresora, si desearias imprimir de otra pc seria asi: -- @fopen("\\192.168.1.123\\termica1", "w")) -- ::192.168.1.123 esto es la ip donde esta la impresora instalada::ademas para esto hay que darle algunos permisos en el firewall...
Otra opcion que ahora yo estoy usando y es mucho mejor, estoy comprando ya las impresoras que vienen con puerto ETHERNET - RED, con esto se puede hacer que se imprima desde cualquier lugar...
----------------
Ahora si usas LINUX es mucho mas rapido---
Primero tines que dar permiso a la impresora fiscal - factura - ticket - termica:
sergio#: sudo chmod -R 777 /dev/usb/lp0
ya con esto tiene permiso para ser usado por cualquier usuario
despues cambiamos el codido de la impresora a:
-- @fopen("PRINT", "w")) -- y al final para imprimir
shell_exec('cat PRINT > /dev/usb/lp0');
Espero pueda ser de ayuda esta informacion para imprimir desde php en impresora de ticket desde el cliente o desde el servidor
Buena tarde sergio,
ResponderEliminarEstoy imprimiendo en una EPSON TMU220D, estoy tratando de imprimir una serie de logotipos pero me arroja una cantidad de caracteres, he probado con varias librerías pero no ha sido posible, habrá alguna función que codifique la imagen o la convierta en pixeles que la impresora los pueda leer y si pueda imprimir? Gracias por la atención y la ayuda
Tengo un servidor web en Centos, y los clientes normalmente están en Windows.
ResponderEliminarAsumo que las configuraciones solo se harán para esas PCs Windows.
Hola a todos tengo el siguiente escenario.
ResponderEliminarUn servidor - Centos
1 Maquina Windows que comparte la impresora - IP:192.168.0.19 (PC1)
1 Maquina Windows que accede a la impresora - IP:192.168.0.77 (PC2)
A.Primero, cuando se comparte la impresora de PC1 se le nombre EPSONLX300II, pero con el puerto USB001.
B. Luego de compartir supongo que tengo que ejecutar este código en la misma PC1. El problema que cuando lo hago me salen problemas, después de ejecutar dicho código: Error de sistema 66 o Error de sistema 5.
NET USE LPT1: \\%COMPUTERNAME%\EPSONLX300II /persistent:yes
C. Ya compartir la Impresora, y puedo verla desde mi PC2. Pero no puedo ejecutar el codigo y mandar a imprimir nada.
puerto impresora, imprimir archivo PRN
?>
Si alguien tiene la como solucionar esto.. favor de hacerlo llegar. En especial la parte en que ejecuto:
NET USE LPT1: \\%COMPUTERNAME%\EPSONLX300II /persistent:yes
Nose si esto debería ejecutar en la PC1, ya que es la que comparte la Impresora.
Luego, en la parte de: $salida = shell_exec('lpr USB001');
Que debería ir ya que el servidor esta en Linux..
x)
Este comentario ha sido eliminado por el autor.
ResponderEliminarAquí el código, q raro que no salio.
ResponderEliminarif(($handle = @fopen("\\192.168.0.19\EPSONLX300II", "w")) === FALSE){
die('No se puedo Imprimir, Verifique su conexion con el Terminal');
}
//$dato = $_POST['datos'];
$datos = "(x',').l.";
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,"=================================");
fwrite($handle, chr(27). chr(100). chr(1));//salto de linea
fwrite($handle, chr(27). chr(32). chr(3));//ESTACIO ENTRE LETRAS
fwrite($handle," ORDEN No 1005 ");
fwrite($handle, chr(27). chr(32). chr(0));//ESTACIO ENTRE LETRAS
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(100). chr(0));//salto de linea VACIO
fwrite($handle, chr(27). chr(100). chr(1));//salto de linea
fwrite($handle,"RESTAURANT LEGENDS SPORTS");
fwrite($handle, chr(27). chr(100). chr(1));//salto de linea
fwrite($handle,"=================================");
fwrite($handle, chr(27). chr(100). chr(3));//salto de linea
fwrite($handle,"PALABRA A IMPRIMIT: ".$dato);
fwrite($handle, chr(27). chr(100). chr(6));//salto de linea
fwrite($handle, chr(29). chr(86). chr(1));//corta hoja automaticamente
fclose($handle); // cierra el fichero PRN
$salida = shell_exec('lpr USB001');
Hola he estado tratando de ajustar el contenido al imprimir un formato tipo factura o guia de despacho (Tamaño Carta) a una impresora Epson LX 300+II y no he podido ajustar. me podrían ayudar con un pequeño ejemplo de como hacerlo
ResponderEliminarPara 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
Hola amigo, a ver si me puedes ayudar. Mis sistema genera la factura, al imprimir con una impresora de tinta (lo hace normal, respeta el tamaño deseado) pero al imprimir la misma factura en la epson LX-350 (matricial) se desconfigura hasta la orientación de la hoja pasa a horizontal.
ResponderEliminarEl pdf que se genera con la libreria tcpdf y se visualiza con el del navegador Chrome. OJO que cuando guardo la factura como un archivo *.pdf desde el visualizador del chrome y lo abro con el adobe reader e imprimo, ahi si imprime tal y como debe ser, pero cuando lo mando a imprimir directamente del chrome se deconfigura la página.
¿qué estoy haciendo mal?¿falta alguna libreria? o se usa otro método? espero tu ayuda y gracias
EXCELENTE TRABAJO NO HAY NADA MAS QUE DECIR
ResponderEliminar¿Como mandas a la impresora de ticket USB desde PHP?
ResponderEliminarhttp://informaticavidareal.blogspot.com/2017/09/impresora-ticket-pos-php-linux.html