Nueva pregunta

Pregunta:

Fecha: 22-03-2015 10:44:25 (En Español)

¿Cómo puedo imprimir directamente a una impresora de tickets desde PHP?[Resuelta]

La impresora está conectada en un USB, pero está emulado el puerto paralelo (LPT1) Etiquetas: Imprimir - PHP - Pregunta Votos: 4 - Respuestas: 41 - Vistas: 196 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 23-03-2015 07:43:30 Creo que tienes que enviar al controlador de impresión de tu sistema operativo y de ahí indicarle que imprima directamente en la impresora.   Votos: 1 - Link respuesta
     
  • Fecha: 24-03-2015 07:29:49 Cuando hablamos de imprimir desde PHP tenemos que tener presente dos posible escenarios:

    a) Imprimir en el servidor donde se ejecuta PHP
    b) Imprimir en la computadora del cliente que esta visualizando una web PHP

    Estimo que lo que estas necesitando realizar es el caso "b) Imprimir en la computadora del cliente que esta visualizando una web PHP".

    Para realizar esto podemos:

    1) Utilizar las funciones de impresión del navegador por medio de Javascript. En este caso creas una página HTML a ser impresa (con la información del ticket) y la envías a imprimir por medio de la función window.print().

    Código de ejemplo:
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <script type="text/javascript">
                function imprimir() {
                    if (window.print) {
                        window.print();
                    } else {
                        alert("La función de impresion no esta soportada por su navegador.");
                    }
                }
            </script>
        </head>
        <body onload="imprimir();">
            Hola PHPCentral!
        </body>
    </html>


    Demo: http://www.phpcentral.com/ejemplos/javascript/imprimir.php

    ----------------------------------

    2) Utilizar la librería fpdf, invocando por Javascript las funciones de impresión de Acrobat Reader. Para esto se requiere la descarga e implementación de la librería fpdf, la generación de un archivo PDF y posteriormente el envio a impresion directa.

    Código de ejemplo:
    <?php
    require('pdf_js.php');
    
    class PDF_AutoPrint extends PDF_JavaScript
    {
    function AutoPrint($dialog=false)
    {
        //Open the print dialog or start printing immediately on the standard printer
        $param=($dialog ? 'true' : 'false');
        $script="print($param);";
        $this->IncludeJS($script);
    }
    
    function AutoPrintToPrinter($server, $printer, $dialog=false)
    {
        //Print on a shared printer (requires at least Acrobat 6)
        $script = "var pp = getPrintParams();";
        if($dialog)
            $script .= "pp.interactive = pp.constants.interactionLevel.full;";
        else
            $script .= "pp.interactive = pp.constants.interactionLevel.automatic;";
        $script .= "pp.printerName = '\\\\\\\\".$server."\\\\".$printer."';";
        $script .= "print(pp);";
        $this->IncludeJS($script);
    }
    }
    
    $pdf=new PDF_AutoPrint();
    $pdf->AddPage();
    $pdf->SetFont('Arial','',20);
    $pdf->Text(90, 50, 'Print me!');
    //Open the print dialog
    $pdf->AutoPrint(true);
    $pdf->Output();
    ?>


    Demo: http://www.fpdf.org/en/script/ex36.pdf
    Fuente: http://www.fpdf.org/en/script/script36.php
    Libería: http://www.fpdf.org/

    Espero que mi respuesta te sea de ayuda, luego nos cuentas como te fue.

    Saludos y buen código!
    Fernando
      Votos: 7 - Link respuesta
     
  • Fecha: 24-03-2015 08:24:45 Hola Fernando, excelente la respuesta. Yo sólo la completaría añadiendo que como valor agregado, pueden establecer reglas CSS extra que utilicen el media type "print" para omitir/ocultar/estilizar distintos componentes de la página para que se imprima con un formato adecuado y que no consuma más tinta que la necesaria. Con esa media type, podemos crear una hoja de estilos "paralela" que reforma el diseño de la página para que pueda imprimirse con menores inconvenientes.

    Pueden leer más en estos enlaces:
    http://ksesocss.blogspot.com/2012/05/estilos-css-para-imprimir-la-regla-page.html (en español)

    http://www.desarrolloweb.com/articulos/css-para-imprimir-pagina-web.html (en español)

    http://www.w3schools.com/css/css_mediatypes.asp (en inglés)

    http://www.smashingmagazine.com/2011/11/24/how-to-set-up-a-print-style-sheet/ (en inglés)

    Espero les sirva ;)
      Votos: 6 - Link respuesta
     
  • Fecha: 24-03-2015 10:02:09 Hola, me resolvió mi duda sobre como imprimir usando php, solo una pregunta, si requiero imprimir en una impresora para punto de venta funciona que lo haga haciendo uso de fpdf? Gracias.   Votos: 2 - Link respuesta
     
  • Fecha: 24-03-2015 10:52:25 Hola...
    Hace unos meses publiqué una forma de hacerlo directamente en la impresora haciendo uso de una librería php_printer. Esto para tickets en modo local funciona muy bien. Ensaya y nos cuentas como te fue.

    https://4lecs.wordpress.com/2013/08/29/tickets-con-php-y-una-impresora-punto-de-venta/
      Votos: 4 - Link respuesta
     
  • Fecha: 24-03-2015 11:24:25 Alexander Rubiano gracias por el link, lo revisé pero la librería que comentas ya no esta en el link y la he buscado pero parece ser que ya no esta continuando para la versión 5.6.7   Votos: 0 - Link respuesta
     
  • Fecha: 24-03-2015 12:20:21 epale chamo yo encontré una librería que logra imprimir a la impresora fiscal se llama zqprint   Votos: 0 - Link respuesta
     
  • Fecha: 24-03-2015 12:30:13 Si tienes razón el link ya estaba caido, sin embargo lo he subido a un nuevo servidor. Intenta y nos cuentas.   Votos: 0 - Link respuesta
     
  • Fecha: 24-03-2015 13:10:54 La descarga esta levantada ! pude descargar el archivo. Gracias   Votos: 1 - Link respuesta
     
  • Fecha: 24-03-2015 13:53:02 Muy buena todas la respuesta de como imprimir
    Mi pregunta es con el ejemplo con javascript de Fernando
    Es posible no imprimir ni el encabezado ni el pie de pagina con el texto de la url?
    encabezado: 24/3/2015 www.phpcentral.com/ejemplos/javascript/imprimir.php
    pie: http://www.phpcentral.com/ejemplos/javascript/imprimir.php 1/1

    Saludos
      Votos: 1 - Link respuesta
     
  • Fecha: 24-03-2015 14:21:49 En Chrome al momento de realizar la impresión, en la opciones avanzadas esta la casilla de verificación de "Encabezados y pie de página", solo se desactiva y ya esta listo. En IExplorer o en Mozilla, en el menú archivo y configurar página están las opciones para deshabilitar el header y footer. Para los demás debe ser muy similar.

    No estoy seguro, pero creo desde el mismo navegador no se puede cambiar esta configuración.
      Votos: 3 - Link respuesta
     
  •  
      0  
     
    Fecha: 11-03-2016 05:59:24 Buen dia, estoy tratando de imprimir un pdf directamente en una impresora determinada, si tener que pasar por el dialogo de impresion. Utilizo la libreria mPdf de esta forma:

    $pdf = new mPDF('','A4',0,'',15,15,-10);  
    $html = 'texto en html';
    
    $server ='192.168.42.14'; //ip de impresora
    $printer = 'EPSON WF-2530 Series';
    $script = 'var pp = getPrintParams();';
    $script .= 'pp.interactive = pp.constants.interactionLevel.full;';
    $script .= "pp.printerName = '\\\\\\\\".$server."\\\\".$printer."';";
    $script .= 'this.print(pp);';
    $pdf->SetJS($script); 
         
    $pdf->WriteHTML(utf8_encode($html));
    $pdf->Output();
    


    Pero no funciona, no se porque no sale el documento en la impresora indicada.
    Estoy trabajando en windows con xampp, no se si eso afecta en algo.

    Les agradeceria si me pudieran ayudar. Saludos.
      Votos: 0 - Link respuesta
     
  • Fecha: 03-09-2016 04:37:34 Gracias por tu ayuda Fernando!

    Probando la impresión directa con fpdf encuentro que al ejecutar ex.php me arroja el error de:

    FPDF error: Some data has already been output, can't send PDF file

    No le moví nada al archivo! Pudieras decirme como evitar este error? Gracias
      Votos: 1 - Link respuesta
     
  • Fecha: 03-09-2016 17:57:56 Hola Roberto, este error es dado por fpdf y tipicamente se da cuando envias al búfer de PHP algún dato antes del PDF, por lo que puede estar ocultando algún otro error relativo a PHP y no a la librería o su utilización (por ejemplo algún mensaje de error por función deprecada en PHP, entre otros).

    Dicho esto, lo que yo haría en una primera instancia es forzar al script a que arroje todos los errores en pantalla, puedes hacerlo agregando error_reporting(-1) junto a ini_set('display_errors', '1') en la cabecera de tu script PHP:
    error_reporting(-1);
    ini_set('display_errors', '1');
    

    Nota: si quieres extender un poco la explicación de estas últimas dos líneas, recientemente aquí hice un aporte al respecto.

    Si no tienes error alguno (además del ya mencionado) prueba incluir ob_end_clean() antes del $pdf->Output()
    ...
    ...
    ob_end_clean();
    $pdf->Output();
    

    Al agregar ob_end_clean() te deshaces de todos los búferes de salida antes de enviar el documento PDF.

    Espero que mi respuesta te sea de ayuda, luego nos cuentas como te fue.

    Saludos y buen código!
      Votos: 0 - Link respuesta
     
  • Fecha: 06-09-2016 09:28:09 Gracias Fernando! Se ha resuelto el problema del mensaje de error al utilizar

    ob_end_clean();
    


    Pero aún me sigue apareciendo la ventana de vista previa!
    Esto no debería aparecer verdad? Debería enviar a imprimir sin vista previa a la impresora "default", cierto?
      Votos: 0 - Link respuesta
     
  • Fecha: 19-11-2016 14:00:31 Buenas tardes, veo que es un poco viejo el tema, pero he buscado e intentado de diferentes maneras pero no he podido lograr mi objetivo, necesito imprimir unos tickets en miniprinter pero sin que aparezca el cuadro de dialogo de impresoras, es decir que se imprima en la impresora predeterminada. Espero puedan ayudarme...Gracias!!   Votos: 0 - Link respuesta
     
  • Fecha: 04-12-2016 13:08:12 En estos momentos me encuentro desarrollando una App en php para imprimir tiquet y la respuesta de Alexander es la indicada, encontré la libreria para la version actual de php
    https://mega.nz/#!2MQkxSBb!wEm0Q-IrwudmtgavNCNG8TlFc2rg1vLDSd-QrgcWXTo
    ese es el enlace que subí para el .dll, debes de copiar y pegar en la siguiente ruta si tienen instalado xampp

    C:\xampp\php\ext .....

    despues de esto buscan el archivo php.ini y buscan donde diga extensiones y pegan la siguiente linea sin las comillas "extension=php_printer.dll" ....

    con esto ya queda listo nuestra extension añadida ... Ahora htdocs pueden crear un archivo de prueba con las siguientes líneas
    <?php
    $html = '<h1>".Test de Impresión de Tickets."</h1>';
    
    $html = 'HOLA MUNDO';
    
    $printer='PDFCreator';
    
    $enlace=printer_open($printer);
    
    printer_write($enlace, $html);
    
    printer_close($enlace);
    ?>
    


    Con esto ya deberia imprimir directamente a la impresora con el nombre de prueba que yo le puse "PDFCreator" .... despues de esto deben detener e iniciar el servicio de apache y mysql para que tomen cambios, posteriormente vuelven e inician servicios y listo ... Mucha suerte
      Votos: 2 - Link respuesta
     
  • Fecha: 18-04-2017 07:51:23 Hola una duda con respeto a la .dll, como lo pondria en un servidor Remoto, Saludos   Votos: 0 - Link respuesta
     
  • Fecha: 24-05-2017 10:35:48 Hola, con respecto a este último código, no comprendo, porque en $printer, pones igual a pdfcreator y no el nombre de la impresora, y en $enlace que se pone???, me pondrias un ejemplo porfavor?

    EDIT: Al final puse esto y me funcionó:
    <?php
    $html = '<h1>".Test de Impresión de Tickets."</h1>';
    $html = 'decimo novena prueba';
    $printer='Xerox WorkCentre 6505N PCL 6';
    $enlace=printer_open($printer);
    printer_write($enlace, $html);
    printer_close($enlace);
    ?>


    Ahora... mi duda es.. es posible imprimir un archivo de word? (estoy trabajando con xampp)
      Votos: 1 - Link respuesta
     
  • Fecha: 24-05-2017 14:51:45 Manu Pralog, yo coloqué pdfcreator porque no contaba con una impresora física, lo hacia con pdf creator porque se instala como una impresora local, con esto simulaba una impresión, en la variable $printer va el nombre exacto de la impresora.

    En cuanto a lo de imprimir un documento de word si es posible.
      Votos: 1 - Link respuesta
     
  • Fecha: 29-05-2017 07:04:49 Buenas!!, tengo una nueva consulta
    <?php
    $html = '<h1>".Test de Impresión de Tickets."</h1>';
    $html = 'decimo novena prueba';
    $printer='Xerox WorkCentre 6505N PCL 6';
    $enlace=printer_open($printer);
    printer_write($enlace, $html);
    printer_close($enlace);
    ?>
    

    Teniendo eso como para imprimir sin cuadro de dialogo, quiero pasarle lo que tenga que imprimir mediante 3 botones, según el que clickeen se imprimirá un determinado valor.
    Pero como hago, porque si creo una funcion en javascript, no puedo utilizar el codigo de impresión porque es para php. Alguna forma de hacerlo?
      Votos: 0 - Link respuesta
     
  • Fecha: 07-06-2017 08:31:01 Alguien tiene algún ejemplo de control de corte del ticket al final de la impresión , para que el ticket no salga hasta el fin de la pagina configurada?   Votos: 0 - Link respuesta
     
  • Fecha: 14-06-2017 13:28:54 Veo que todavía hay actividad por acá. Les recomiendo prueben mike42.
    Yo utilizo esc-pos y funciona muy bien con una ticketera como las que usan en las farmacias, oxxo, o en el súper. Imprimo directamente sin diálogos, Nadamás que imprimo el servidor donde tengo el sistema o aplicación Web.

    https://github.com/mike42
      Votos: 2 - Link respuesta
     
  • Fecha: 14-06-2017 14:40:12 Cano Ríos: muy buen aporte +1
    Dejo un video donde se muestra la utilización de la librería mike42

    IMPRIMIR DESDE PHP EN IMPRESORA POS




    Saudos
      Votos: 1 - Link respuesta
     
  • Fecha: 16-06-2017 03:42:45 Gracias Kano Rios y gracias Walter Sánchez por sus respuestas. No tenia conocimiento de este recurso. Lo voy a estudiar y probar y comentaré la experiencia.   Votos: 0 - Link respuesta
     
  • Fecha: 16-06-2017 12:17:19 Estimados he probado la página de prueba con javascript de Fernando Mosquera y cuando utilizo la impresora termal que tengo , las letras me aparecen borrosas. Cuando abro un pdf y lo trato de imprimir, sucede lo mismo, sólo cuando abro un word este me configura bien todo para mi impresora termal de 58mm, claro que antes en diseño coloco la medida que me detecta word. En realidad sólo quiero imprimir, no enviar comandos ni esas cosas. Pero como dije sale borrosa la letra, alguien sabe ¿por qué o como solucionar esto?   Votos: 0 - Link respuesta
     
  • Fecha: 22-06-2017 04:48:40 Con respecto al corte, lo configuras en la impresora, depende de la marca, algunos lo tienen en opciones avanzadas como cut paper (cortar papel).

    De forma particular, yo trabajo la impresión en fpdf, con el autoprint, hago que el cliente haga un enter adicional, ya que a veces cambian de impresora.
    Saludos.
      Votos: 0 - Link respuesta
     
  • Fecha: 17-08-2017 16:52:24 Cano Rios o Walter Sanchez me podrian decir por favor si puedo utilizar mike42 para imprimir tickets desde un dominio web que esta hecho para un punto de venta, enviando automáticamente al miniprinter y evitando que se genere la vista previa en pdf?   Votos: 0 - Link respuesta
     
  • Fecha: 24-09-2017 17:01:45 Saludos para todos... Estoy utilizando FPDF AutoPrint con el ejemplo de Fernando, me genera este error:

    Fatal error: Call to undefined method PDF_AutoPrint::_put() in W:\xampp\htdocs\Tools\fpdf\pdf_js.php on line 18

    Gracias por su ayuda.
      Votos: 0 - Link respuesta
     
  • Fecha: 27-09-2017 12:25:51 Prueba con este codigo
    http://www.fpdf.org/en/script/script36.php


    Saludos
    Miguel Panuera
    www.iuvade.com
    mpanuera@iuvade.com
      Votos: 0 - Link respuesta
     
  • Fecha: 04-10-2017 08:23:44 Igual que Jesús, tengo la duda de cómo puedo, con la librería mike42, imprimir a una impresora POS desde un dominio. El ejemplo está para un programa que esté instalado localmente, pero mi progama está en un hosting.   Votos: 0 - Link respuesta
     
  • Fecha: 05-10-2017 10:19:00 Estoy en las mismas que Andrea, el proyecto esta en un hosting no local. Alguien? ayuda?   Votos: 0 - Link respuesta
     
  • Fecha: 05-10-2017 11:58:53 Usa el Autoprint en el pdf, luego en chrome hay una opcion para evitar el cuadro de dialogo

    http://www.gesio.pro/evita-la-aparicion-del-cuadro-de-dialogo-de-la-impresora-en-el-tpv-online-a-la-hora-de-imprimir-tickets-desde-tu-navegador-actualizado-21-mayo-2016-blog-91-50-235/

    http://self_loving.blogspot.pe/2011/11/deshabilitando-la-vista-previa-de.html

    Aun no lo he probado, pero deberia funcionar.

    mpanuera@iuvade.com
    www.iuvade.com

    Saludos.
      Votos: 0 - Link respuesta
     
  • Fecha: 05-10-2017 12:13:23 Para serles sincero, la solucion que dan arriba y la que doy yo mas arriba son las únicas conocidas, no tengo conocimiento de otras posibilidades, me mate mucho la cabeza para poder generar impresiones directamente en el cliente pero no pude.   Votos: 0 - Link respuesta
     
  • Fecha: 24-10-2017 06:07:41 Hola como estan. Tengo una duda...Trabajo en un software hotelero con punto de venta POS. Es Php y es en linea..como hago para imprimir directamente ..por ejemplo en este momento tengo unprograma que se llama printnode pero me causa problemas al tener mas de una impresora para puntos de vetna..que oppcion me podrian ayudar para poder imprimir directamente o al menos que la ventana de pdf salga pero no me salga el dialogo de las impresoras   Votos: 0 - Link respuesta
     
  • Fecha: 24-10-2017 06:47:17 Leiver:
    Mas arriba puse unas soluciones, lo haz probado?
    http://www.phpcentral.com/pregunta/92/como-puedo-imprimir-directamente-a-una-impresora-de-tickets-desde-php#resp_e34376937c784505d9b4fcd980c2f1ce

    Miguel Panuera
    mpanuera@iuvade.com
    www.iuvade.com
      Votos: 0 - Link respuesta
     
  • Fecha: 24-10-2017 12:53:49 Gracias miguel!!! tengo una impresora epson aunque el dialogo de impresoras no me aparece   Votos: 1 - Link respuesta
     
  • Fecha: 24-10-2017 13:00:52 Me muestra solo el cuadro de pdf de mi factura..pero hasta el momento esta bien   Votos: 1 - Link respuesta
     
  • Fecha: 25-10-2017 05:37:55 Hay un programa que se llama printnode. En el pueden generar las impresiones directas..lo malo es que tiene costo..por ese detalle estoy buscando solucion pra que nos ea con cobro   Votos: 0 - Link respuesta
     
  • Fecha: 07-11-2017 12:02:23 Bueno, yo hice algo loco. Yo cree una libreria de una rutina de impresion con VB6. Y la use como un COM en php. Y la puedo llamar desde una pagina web o desde un programa en ANDROID. Imprimo lo que yo previamente he seleccionado de la base de datos. sencillo.   Votos: 0 - Link respuesta
     
  • Fecha: 07-11-2017 12:14:52

    function CrearCom() {
    global $Impresora;
    global $pic;
    if($pic==0) {
    $Impresora=new COM('Printphp.ClasePrint')or die("No se puede conectar al servidor");
    $pic = $Impresora->ActivarPrint();
    //echo $pic;
    La libreria se llama PrintPhp.dll y tiene tres funciones nada mas. Y debes estar en la misma carpeta de la pagina principal.
      Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión