Impresion automatica de tiquet con fpdf


Cuando vemos los sistemas de terminales punto de venta, una característica que los hace que sean rápidos es la impresión automática del tiquet o comprobante de pago, el usuario no tiene que seleccionar que desea imprimir el documento, solo indicar que se hace el cobro y el tiquet sale al mismo tiempo que se presenta en pantalla, ahora la situación es como hacerlo en un sistema con php y que crea documentos con la librería fpdf.

Los códigos que a continuación se describen están incluidos en la sección scripts de la pagina oficial de fpdf y diseñados por Johannes Güntert, así que comencemos con esta primera parte del código:

Lo que tenemos en la imagen es una extensión del típico objeto fpdf que usamos para crear los reportes, en este caso el objeto extendido se llama PDF_Javascript y que corresponde a la linea marcada con el punto 2, basicamente estamos haciendo uso de la plataforma cruzada llamada Adobe Javascript, a través de la cual adobe nos facilita la inserción de códigos javascript dentro de un documento u objeto adobe.

Para poder crear este objeto hacemos uso de la instrucción “requiere” para vincular que se hará uso de la librería de fpdf, linea que tenemos marcado con el punto 1.

A continuación se crea el método IncludeJS marcado con el punto 3 que recibe un script que almacenada en el atributo Javascript.

En el punto 4 observamos el método putjavascript que es el que se encarga de escribir el codigo almacenado dentro del atributo javascript , usando el método out para escribir el código a través de la declaracion de objeto embebido, propia de adobe javascript.

En el punto 5 el método putrecourses se encarga de verificar la existencia de código javascript en el pdf, asl no encontrarlo llamara a putjavascript para que inserte el código.

Finalmente en el punto 6 tenemos al método putcatalog que verifica si el atributo javascript esta vacío y en caso de estarlo agrega la linea inicial del código javascript dentro del pdf.

Este objeto puede ser copiado tal y como esta para ser usado en la impresión de nuestro comprobante o tiquet, así que pasemos a ver como lo usaríamos.

 

Aqui vemos el ejemplo que nos pone el autor,  en el podemos ver encerrado en rojo, que para realizar el efecto que queremos debemos incluir el pdf_js.php atraves de la instrucción requiere, y que corresponde al nombre con el que se guardo el código anterior, después creamos una clase llamada PDF_AUTOPRINT, que es la que hará el efecto de impresión automática, ya que el código que vimos primero solo agregar código javascript dentro del PDF.

En esta nueva clase se crean dos métodos, uno para impresión en impresora local y otro para impresora en red, llamados AUTOPRINT y AUTOPRINTTOPRINTER respectivamente, dentro de estos podemos ver que se agregan los códigos javascript en las variables script que serán enviadas al método includejs.

Dicho parte del codigo de igual forma puede ser copia tal cual dentro de nuestro código de impresión, ahora si comenzaremos con la creación de nuestro documento, y la comenzamos con $pdf=newPDF_AutoPrint(); en vez del clasico $pdf=new FPDF(); esto para que el pdf que creemos lo haga con los códigos jlavascript que estamos creando, las demás lineas corresponderían a la creación de nuestro tiquet y una vez terminado y iriamos a la penultima linea en la que llamamos al metodo autoprint y le pasamos el valor de true, esto lo que hará es que una vez que se llame a Output para crear el documento y darle salida se habrá el cuadro de dialogo de imprimir, ahora si en lugar de true le pasamos el valor false, el documento sera enviado a la impresora predeterminada sin abrir el cuadro de dialogo de imprimir.

Bueno hasta aquí este ejemplo y pueden revisar muchos mas en la sección scripts del FPDF.ORG

 

 

 

 

Anuncios

Acerca de sistemasumma

Blog dedicado a la tecnología y a todos los estudiantes de sistemas, informatica, computación y afines
Esta entrada fue publicada en programacion y etiquetada , , , . Guarda el enlace permanente.

56 respuestas a Impresion automatica de tiquet con fpdf

  1. Hola, muy buen articulo, estoy desarrollando una aplicacion web, en la que tengo esta funcion para que me imprima automaticamente, aunque realmente lo unico automatico es que me muestra el cuadro de dialogo, pero con una opcion que tienen chrome por medio de la cual se abre la aplicacion como una aplicacion nativa, ellos la llaman kiosk, logre que si imprimiera automaticamente en la impresora, pero tengo un problema y viendo los comentarios descubri que no solamente a mi me pasa y es que deseo que se cierre la ventana del navegador apenas se cree el pdf (Teniendo en cuenta la funcion de kiosk que comente, se imprime apenas se crea el pdf) decias que con echo “windows.close();” despues de out pero nada, no lo hace, no se si sepan de una manera de hacerlos, les estaria gratamente agradecido. la parte del codigo donde tengo el windows.close es
    $pdf->AutoPrint(false);
    $pdf->Output();
    echo “window.close();”;

    Me gusta

  2. jcvch2005 dijo:

    Estimado te saludo nuevamente y espero que me puedas ayudar, tengo dos problemas, el primero es que estoy tratando de imprimir una tabla con datos sacados de mysql por el método de autoprint pero me envía el siguiente error: (Fatal error: Call to undefined method PDF_AutoPrint::Table() ), y lo otro, tu sabes como puedo redireccionar el pdf a otra pagina o volver a atras despues de que se imprimira?, he intentado con window.location. header y no me funciona, espero que me puedas ayudar ya que llevo dias intentado identificar los problemas y donde soy principiante no me doy cuenta. Saludos

    Me gusta

  3. miki dijo:

    al incluir el codigo fpdf.php en la carpeta me da el error, continua dando el error:
    Warning: FPDF::include(C:\Apache\htdocs\impresion/font/helvetica .php) [function.FPDF-include]: failed to open stream: No such file or directory in C:\Apache\htdocs\impresion\fpdf.php on line 1145

    Warning: FPDF::include() [function.include]: Failed opening ‘C:\Apache\htdocs\impresion/font/helvetica .php’ for inclusion (include_path=’.;C:\php5\pear’) in C:\Apache\htdocs\impresion\fpdf.php on line 1145

    Me gusta

    • sistemasumma dijo:

      por las direcciones que te da, pareciera que estas tratando de ejecutar la pagina sin acceder al servidor o sin tener activo el servidor

      Me gusta

      • miki dijo:

        El servicio esta activo (corro otras aplicaciones web sin problemas):
        Warning: FPDF::include(helvetica.php) [fpdf.include]: failed to open stream: No such file or directory in C:\AppServ\www\fpdfjs\fpdf.php on line 1145

        Warning: FPDF::include() [function.include]: Failed opening ‘helvetica.php’ for inclusion (include_path=’.;C:\php5\pear’) in C:\AppServ\www\fpdfjs\fpdf.php on line 1145
        FPDF error: Could not include font definition file

        Me gusta

  4. chayo dijo:

    Estimado, encontre muy bueno tu aporte pero me arroja estos errores, espero que me puedas ayudar, gracias.

    Warning: FPDF::include(C:\Apache\htdocs\impresion/font/helvetica .php) [function.FPDF-include]: failed to open stream: No such file or directory in C:\Apache\htdocs\impresion\fpdf.php on line 1145

    Warning: FPDF::include() [function.include]: Failed opening ‘C:\Apache\htdocs\impresion/font/helvetica .php’ for inclusion (include_path=’.;C:\php5\pear’) in C:\Apache\htdocs\impresion\fpdf.php on line 1145

    FPDF error: Could not include font definition file

    Me gusta

  5. ARIEL dijo:

    Disculpa no entiendo por que este error
    FPDF error: Some data has already been output, can’t send PDF file

    Me gusta

  6. Alvaro Vargas dijo:

    hola a todos soy nuevo en el uso del fpdf ye me presento el requisito de que el pdf debe imprimirse automáticamente y me funciona de maravilla el código anterior pero en eso se me presenta un nuevo problema que después de la impresión el navegador se cierre automáticamente. Espero que me puedan ayudar con este problema saludos

    Me gusta

  7. Francisco Gonzalez dijo:

    Hola, buenas tardes. Tengo una impresora EC 5895X de EC-LINE. No puedo imprimir mi ticket con una impresora local, ya instale el pdf_js.php y no me permite la impresión mas no asi la salida a un archivo.pdf,, alguien me podria ayudar… Gracias

    Me gusta

  8. hola buenas tardes, agradeceria si alguien pudiera colaborarme, al momento de generar el reporte con autoprint de la libreria, lo hace muy bn, me abre el dialogo de impresion y demas, lo qeu sucede es qeu al momento de darle imprimir, no se imprime nada, la hoja sale en blanco. agradezo la atencion.

    Me gusta

    • sistemasumma dijo:

      que impresora estas usando?

      Me gusta

      • impresora matriz de punto epson lx 350. acontinuacion esta elcodigo qeu utilizo en la generacion.:

        IncludeJS($script);
        ob_start();
        //echo ‘en 4 segundos me voy a otra página’;
        header(‘refresh: 10;’ . $_SERVER[‘HTTP_REFERER’]);
        //header(‘refresh: 4; http://www.cristalab.com‘);
        //exit;
        ob_end_flush();

        }

        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);
        }
        // Cabecera de página
        function Header()
        {
        // Logo
        //$this->Image(‘logo_pb.png’,10,8,33);
        // Arial bold 15
        $this->SetFont(‘Helvetica’,’B’,13 );
        // Movernos a la derecha
        $this->Cell(80);
        // Título

        }
        }

        $pdf=new PDF_AutoPrint();
        $configuracion = new Config();
        $configuracionpsg = new ConfigPostgreSQL();
        // Creación del objeto de la clase heredada

        $nombre_tercero = strtoupper($_POST[‘NombreTerceroEgresos’]);
        $data_terceros = strtoupper($_POST[‘IdentificacionTerceroEgresos’]);
        $fecha_actual = strtoupper($_POST[‘FechaActual’]);
        $fecha_impresion = strtoupper($_POST[‘FechaImpresion’]);

        //$valor_numeros = strtoupper($_POST[‘ValorNumerosEgresos’]);
        $nombre_concepto = strtoupper($_POST[‘NombreConceptoEgresos’]);

        $detalle_ingreso = strtoupper($_POST[‘DetalleEgresos’]);
        $numero_comprobante = $_POST[‘NumeroSerialEgresos’];
        /*$codigo_colocador = strtoupper($_POST[‘IdCodigoColocadorIngresos1’]);
        $nombre_colocador = strtoupper($_POST[‘NombreColocadorIngresos1′]);*/

        $pdf->AliasNbPages();
        $pdf->AddPage(”,’letter’);
        //$pdf->SetMargins(0, 0, 0, 0);
        $pdf->SetFont(‘Helvetica’,’B’,13);
        $pdf->Ln(2);
        for($i=1;$iCell(0,0,”,1,0);
        $pdf->Ln(2);
        $pdf->Cell(120,5,’Comprobante de Egresos No. ‘.$numero_comprobante,0,0);
        $pdf->SetFont(‘Helvetica’,’B’,13);
        $pdf->Cell(0,5,”,0,1);
        $pdf->Cell(0,5,’Ciudad y Fecha : ‘.$fecha_actual,0,1);
        $pdf->Cell(0,5,’Fecha y hora de impresion : ‘.$fecha_impresion,0,1);
        $pdf->Ln(2);
        for($i=1;$iCell(0,0,”,1,0);
        $pdf->Ln(2);
        $pdf->Cell(130,5,’Paguese a : ‘.$nombre_tercero,0,0);
        $pdf->Cell(0,5,’C.C. / Nit : ‘.$data_terceros,0,1);

        $suma_formato = number_format($_POST[‘valorfactura’]);
        /*$n = new numerosALetras ($suma) ;
        $valor_letras = $n->resultado;*/
        $num=1234;
        $totalDebe=0;
        $totalHabe=0;
        $V = new EnLetras();
        $valor_letras = $V->ValorEnLetras($_POST[‘valorfactura’],”pesos”);

        $pdf->Cell(0,5,’La suma de : ‘.strtoupper($valor_letras).”M/CTE”,0,1);
        $pdf->Cell(0,5,’Valor en numeros : $ ‘.$suma_formato,0,1);
        $pdf->Ln(1);
        for($i=1;$iCell(0,0,”,1,0);
        $pdf->Ln(1);
        $pdf->Cell(0,5,’Concepto : ‘.$_POST[‘IdConceptoEgresos’].” – “.$nombre_concepto,0,1);
        $pdf->Cell(0,5,’Detalle : ‘.$detalle_ingreso,0,1);
        $pdf->Ln(1);
        for($i=1;$iCell(0,0,”,1,0);
        $pdf->Ln(2);
        $pdf->SetFont(‘Helvetica’,’B’,13);
        $pdf->Cell(0,4,’CONTABILIZACION ‘,0,1,’C’);
        $pdf->Cell(30,4,’** Cuenta **’,0,0);
        $pdf->Cell(100,4,’Detalle’,0,0);
        $pdf->Cell(30,4,’Debito’,0,0);
        $pdf->Cell(30,4,’Credito’,0,1);
        $pdf->SetFont(‘Helvetica’,’B’,13);
        $configuracion->OpenCon();

        $tipo_doc = $configuracion->consulta_general(“*”);
        foreach ($tipo_doc as $tipo):
        $tipodoc = $tipo->IdTipoDocumentoTercero;
        $tipoter = $tipo->IdTipoTercero;
        $tiporeg = $tipo->IdTipoRegimenTercero;
        $estCont = $tipo->ContribuyenteTercero;
        $estAuto = $tipo->AutoretenedorTercero;
        endforeach;
        $IdCaja = $configuracion->consulta_general(“*”);
        foreach ($IdCaja as $id):
        $idcaja1 = $id->IdCajaUsuario;
        endforeach;
        $Sucursal = $configuracion->consulta_general(“*”);
        foreach ($Sucursal as $sucu):
        $idsucursal = $sucu->SucursalCaja;
        endforeach;
        $configuracion->CloseCon();
        $concepto = $_POST[‘IdConceptoEgresos’];
        $FormaPago = $_POST[‘formas_pago’];
        $conn_string = $configuracionpsg->OpenConPostgreSql();

        if($estCont == 1 || $estAuto == 1){
        $Crete = $this->configuracionpsg->consulta_general(“*”);
        foreach ($Crete as $rete):
        $idrete = $rete->cecre;
        $iva1= $rete->ceiva;
        $iva2= split(‘[.]’, $iva1);
        endforeach;

        $gasto = $this->configuracionpsg->consulta_general(“*”);
        foreach ($gasto as $g):
        $cuenta = “$g->incta $g->insuf $g->insub $g->incop”;
        $nombrecuenta= $g->ctnom;
        if($g->inafe == ‘0’){
        $totalDebe+=$_POST[‘ValorEgresos’];
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,number_format($_POST[‘ValorEgresos’]),0,0);
        $pdf->Cell(30,5,”,0,1);

        }
        if($g->inafe == 1){
        $totalHabe+=$_POST[‘ValorEgresos’];
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,”,0,0);
        $pdf->Cell(30,5,number_format($_POST[‘ValorEgresos’]),0,1);
        }
        endforeach;

        $ivaplicable = $this->configuracionpsg->consulta_general(“*”);
        foreach ($ivaplicable as $iva):
        $cuenta = “$iva->incta $iva->insuf $iva->insub”;
        $nombrecuenta= $iva->ctnom;
        $montof=($_POST[‘ValorEgresos’] * 0.16);
        if($iva->inafe == ‘0’){
        $totalDebe+=$montof;
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,number_format($montof),0,0);
        $pdf->Cell(30,5,”,0,1);
        }
        if($iva->inafe == 1){
        $totalHabe+=$montof;
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,”,0,0);
        $pdf->Cell(30,5,number_format($montof),0,1);
        }
        endforeach;

        $pago = $this->configuracionpsg->consulta_general(“*”);
        foreach ($pago as $p):
        $cuenta = “$p->incta $p->insuf $p->insub”;
        $nombrecuenta= $p->ctnom;
        $resultado = $totalDebe – $totalHabe;
        if($p->inafe == ‘0’){
        $totalDebe+=$resultado;
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,number_format($resultado),0,0);
        $pdf->Cell(30,5,”,0,1);
        }
        if($p->inafe == 1){
        $totalHabe+=$resultado;
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,”,0,0);
        $pdf->Cell(30,5,number_format($resultado),0,1);
        }
        endforeach;

        }else if($tiporeg == 1){
        if($tipoter == 1){ //cambiando nombres y valores de captura

        $gasto = $this->configuracionpsg->consulta_general(“*”);
        foreach ($gasto as $g):
        $cuenta = “$g->incta $g->insuf $g->insub”;
        $nombrecuenta= $g->ctnom;
        if($g->inafe == ‘0’){
        $totalDebe+=$_POST[‘ValorEgresos’];
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,number_format($_POST[‘ValorEgresos’]),0,0);
        $pdf->Cell(30,5,”,0,1);
        }
        if($g->inafe == 1){
        $totalHabe+=$_POST[‘ValorEgresos’];
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,”,0,0);
        $pdf->Cell(30,5,number_format($_POST[‘ValorEgresos’]),0,1);
        }
        endforeach;

        $Crete = $this->configuracionpsg->consulta_general(“*”);
        foreach ($Crete as $rete):
        $idrete = $rete->cecre;
        $iva1= $rete->ceiva;
        $iva2= split(‘[.]’, $iva1);
        endforeach;

        $ivaplicable = $this->configuracionpsg->consulta_general(“*”);
        foreach ($ivaplicable as $iva):
        $porcentajeiva = $this->configuracionpsg->consulta_general(“*”);
        foreach ($porcentajeiva as $porc):
        $porciva = $porc->ivpor;
        endforeach;
        $cuenta = “$iva->incta $iva->insuf $iva->insub”;
        $nombrecuenta= $iva->ctnom;
        $montof=($monto * $porciva)/100;
        if($iva->inafe == ‘0’){
        $totalDebe+=$montof;
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,number_format($montof),0,0);
        $pdf->Cell(30,5,”,0,1);
        }
        if($iva->inafe == 1){
        $totalHabe+=$montof;
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,”,0,0);
        $pdf->Cell(30,5,number_format($montof),0,1);
        }
        endforeach;

        $reteiva = $this->configuracionpsg->consulta_general(“*”);

        foreach ($reteiva as $reti):
        $cuenta = “$reti->incta $reti->insuf $reti->insub”;
        $nombrecuenta= $reti->ctnom;
        $montof=$montof * 0.15;
        if($iva->inafe == ‘0’){
        $totalDebe+=$montof;
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,number_format($montof),0,0);
        $pdf->Cell(30,5,”,0,1);
        }
        if($iva->inafe == 1){
        $totalHabe+=$montof;
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,”,0,0);
        $pdf->Cell(30,5,number_format($montof),0,1);
        }
        endforeach;
        $porcentaje = $this->configuracionpsg->consulta_general(“*”);
        foreach ($porcentaje as $por):
        $porcent = $por->crpor;
        $base = $por->crbas;
        if($monto > $base){
        //return “$monto > $base —$porcent “;
        $montof=($monto * $porcent)/100;
        $retencion = $this->configuracionpsg->consulta_general(“*”);
        foreach ($retencion as $rets):
        $cuenta = “$rets->incta $rets->insuf $rets->insub”;
        $nombrecuenta= $rets->ctnom;
        if($iva->inafe == ‘0’){
        $totalDebe+=$montof;
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,number_format($montof),0,0);
        $pdf->Cell(30,5,”,0,1);
        }
        if($iva->inafe == 1){
        $totalHabe+=$montof;
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,”,0,0);
        $pdf->Cell(30,5,number_format($montof),0,1);
        }
        endforeach;
        }
        endforeach;

        $pago = $this->configuracionpsg->consulta_general(“*”);
        foreach ($pago as $p):
        $cuenta = “$p->incta $p->insuf $p->insub”;
        $nombrecuenta= $p->ctnom;
        $resultado = $totalDebe-$totalHabe;
        if($p->inafe == ‘0’){
        $totalDebe+=$resultado;
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,number_format($resultado),0,0);
        $pdf->Cell(30,5,”,0,1);
        }
        if($p->inafe == 1){
        $totalHabe+=$resultado;
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,”,0,0);
        $pdf->Cell(30,5,number_format($resultado),0,1);
        }
        endforeach;

        }
        if($tipoter == 2){
        $gasto = $this->configuracionpsg->consulta_general(“*”);
        foreach ($gasto as $g):
        $cuenta = “$g->incta $g->insuf $g->insub”;
        $nombrecuenta= $g->ctnom;
        if($g->inafe == ‘0’){
        $totalDebe+=$_POST[‘ValorEgresos’];
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,number_format($_POST[‘ValorEgresos’]),0,0);
        $pdf->Cell(30,5,”,0,1);
        }
        if($g->inafe == 1){
        $totalHabe+=$_POST[‘ValorEgresos’];
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,”,0,0);
        $pdf->Cell(30,5,number_format($_POST[‘ValorEgresos’]),0,1);
        }
        endforeach;

        $Crete = $this->configuracionpsg->consulta_general(“*”);
        foreach ($Crete as $rete):
        $idrete = $rete->cecre;
        $iva1= $rete->ceiva;
        $iva2= split(‘[.]’, $iva1);
        endforeach;
        if($_POST[‘IdConceptoEgresos’] != ‘003’){
        $porcentaje = $configuracionpsg->consulta_general(“*”);
        foreach ($porcentaje as $por):
        $porcent = $por->crpor;
        $base = $por->crbas;
        if($_POST[‘ValorEgresos’] > $base){
        $montof=($_POST[‘ValorEgresos’] * $porcent)/100;
        $retencion = $configuracionpsg->consulta_general(“*”);
        foreach ($retencion as $rets):
        $cuenta = “$rets->incta $rets->insuf $rets->insub”;
        $nombrecuenta= $rets->ctnom;
        if($rets->inafe == ‘0’){
        $totalDebe+=$montof;
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,number_format($montof),0,0);
        $pdf->Cell(30,5,”,0,1);
        }
        if($rets->inafe == 1){
        $totalHabe+=$montof;
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,”,0,0);
        $pdf->Cell(30,5,number_format($montof),0,1);
        }
        endforeach;
        }
        endforeach;

        }else{

        $porcentaje = $configuracionpsg->consulta_general(“*”);
        foreach ($porcentaje as $por):
        $porcent = $por->crpor;
        $base = $por->crbas;
        if($_POST[‘ValorEgresos’] > $base){
        $montof=($_POST[‘ValorEgresos’] * $porcent)/100;
        $retencion = $configuracionpsg->consulta_general(“*”);
        foreach ($retencion as $rets):
        $cuenta = “$rets->incta $rets->insuf $rets->insub”;
        $nombrecuenta= $rets->ctnom;
        if($rets->inafe == ‘0’){
        $totalDebe+=$montof;
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,number_format($montof),0,0);
        $pdf->Cell(30,5,”,0,1);
        }
        if($rets->inafe == 1){
        $totalHabe+=$montof;
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,”,0,0);
        $pdf->Cell(30,5,number_format($montof),0,1);
        }
        endforeach;
        }
        endforeach;

        }
        $ivaplicable = $configuracionpsg->consulta_general(“*”);
        foreach ($ivaplicable as $iva):
        $cuenta = “$iva->incta $iva->insuf $iva->insub”;
        $nombrecuenta= $iva->ctnom;
        $montof=($_POST[‘ValorEgresos’] * 0.16);
        if($iva->inafe == ‘0’){
        $totalDebe+=$montof;
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,number_format($montof),0,0);
        $pdf->Cell(30,5,”,0,1);
        }
        if($iva->inafe == 1){
        $totalHabe+=$montof;
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,”,0,0);
        $pdf->Cell(30,5,number_format($montof),0,1);
        }
        endforeach;

        $reteiva = $configuracionpsg->consulta_general(“*”);

        foreach ($reteiva as $reti):
        $cuenta = “$reti->incta $reti->insuf $reti->insub”;
        $nombrecuenta= $reti->ctnom;
        $montof=$montof * 0.15;
        if($reti->inafe == ‘0’){
        $totalDebe+=$montof;
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,number_format($montof),0,0);
        $pdf->Cell(30,5,”,0,1);
        }
        if($reti->inafe == 1){
        $totalHabe+=$montof;
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,”,0,0);
        $pdf->Cell(30,5,number_format($montof),0,1);
        }
        endforeach;

        $pago = $configuracionpsg->consulta_general(“*”);
        foreach ($pago as $p):
        $cuenta = “$p->incta $p->insuf $p->insub”;
        $nombrecuenta= $p->ctnom;
        $resultado = $totalDebe-$totalHabe;
        if($p->inafe == ‘0’){
        $totalDebe+=$resultado;
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,number_format($resultado),0,0);
        $pdf->Cell(30,5,”,0,1);
        }
        if($p->inafe == 1){
        $totalHabe+=$resultado;
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,”,0,0);
        $pdf->Cell(30,5,number_format($resultado),0,1);
        }
        endforeach;

        }
        }else if($tiporeg == 2){
        if($tipoter == 1){

        $gasto = $configuracionpsg->consulta_general(“*”);
        foreach ($gasto as $g):
        $cuenta = “$g->incta $g->insuf $g->insub”;
        $nombrecuenta= $g->ctnom;
        if($g->inafe == ‘0’){
        $totalDebe+=$_POST[‘ValorEgresos’];
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,number_format($_POST[‘ValorEgresos’]),0,0);
        $pdf->Cell(30,5,”,0,1);
        }
        if($g->inafe == 1){
        $totalHabe+=$_POST[‘ValorEgresos’];
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,”,0,0);
        $pdf->Cell(30,5,number_format($_POST[‘ValorEgresos’]),0,1);
        }
        endforeach;

        $Crete = $configuracionpsg->consulta_general(“*”);
        foreach ($Crete as $rete):
        $idrete = $rete->cecre;
        $iva1= $rete->ceiva;
        endforeach;

        $porcentaje = $configuracionpsg->consulta_general(“*”);
        foreach ($porcentaje as $por):
        $porcent = $por->crpor;
        $base = $por->crbas;
        if($_POST[‘ValorEgresos’] > $base){
        $montof=($_POST[‘ValorEgresos’] * $porcent)/100;
        $retencion = $configuracionpsg->consulta_general(“*”);
        foreach ($retencion as $rets):
        $cuenta = “$rets->incta $rets->insuf $rets->insub”;
        $nombrecuenta= $rets->ctnom;
        if($rets->inafe == ‘0’){
        $totalDebe+=$montof;
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,number_format($montof),0,0);
        $pdf->Cell(30,5,”,0,1);
        }
        if($rets->inafe == 1){
        $totalHabe+=$montof;
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,”,0,0);
        $pdf->Cell(30,5,number_format($montof),0,1);
        }
        endforeach;

        $reteiva = $configuracionpsg->consulta_general(“*”);

        foreach ($reteiva as $reti):
        $cuenta = “$reti->incta $reti->insuf $reti->insub”;
        $nombrecuenta= $reti->ctnom;
        $montof=($_POST[‘ValorEgresos’] * 0.16)*0.15;
        if($reti->inafe == ‘0’){
        $totalDebe+=$montof;
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,number_format($montof),0,0);
        $pdf->Cell(30,5,”,0,1);
        }
        if($reti->inafe == 1){
        $totalHabe+=$montof;
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,”,0,0);
        $pdf->Cell(30,5,number_format($montof),0,1);
        }
        endforeach;

        $ivadescontable = $configuracionpsg->consulta_general(“*”);
        foreach ($ivadescontable as $ivad):
        $cuenta = “$ivad->incta $ivad->insuf $ivad->insub”;
        $nombrecuenta= $ivad->ctnom;
        if($ivad->inafe == ‘0’){
        $totalDebe+=$montof;
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,number_format($montof),0,0);
        $pdf->Cell(30,5,”,0,1);
        }
        if($ivad->inafe == 1){
        $totalHabe+=$montof;
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,”,0,0);
        $pdf->Cell(30,5,number_format($montof),0,1);
        }
        endforeach;
        }
        endforeach;

        $pago = $configuracionpsg->consulta_general(“*”);
        foreach ($pago as $p):
        $cuenta = “$p->incta $p->insuf $p->insub”;
        $nombrecuenta= $p->ctnom;
        $resultado = $totalDebe – $totalHabe;
        if($p->inafe == ‘0’){
        $totalDebe+=$resultado;
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,number_format($resultado),0,0);
        $pdf->Cell(30,5,”,0,1);
        }
        if($p->inafe == 1){
        $totalHabe+=$resultado;
        $pdf->Cell(30,5,$cuenta,0,0);
        $pdf->Cell(100,5,$nombrecuenta,0,0);
        $pdf->Cell(30,5,”,0,0);
        $pdf->Cell(30,5,number_format($resultado),0,1);
        }
        endforeach;

        }
        }
        $configuracionpsg->CloseConPostgreSql($conn_string);
        $pdf->SetFont(‘Helvetica’,’B’,13);
        $pdf->Cell(130,4,’Total Comprobante….’,0,0);
        $pdf->SetFont(‘Helvetica’,’B’,13);
        $pdf->Cell(30,4,’$ ‘.number_format($totalDebe),0,0);
        $pdf->Cell(30,4,’$ ‘.number_format($totalHabe),0,1);
        $pdf->SetFont(‘Helvetica’,’B’,13);
        $pdf->Cell(40,12,’Elaborado’,1,0,’C’);
        $pdf->Cell(40,12,’Revisado’,1,0,’C’);
        $pdf->Cell(40,12,’Aprobado’,1,0,’C’);
        $pdf->Cell(70,12,’Recibi’,1,0,’C’);

        /*$variable_serial = $numero_comprobante + 1; // incremento el numero del comprobante
        $configuracion->OpenCon(); // inicio una nueva coneccion
        // consulto a que caja es la asignada para el usuario autenticado
        $query_caja = $configuracion->consulta_general(“IdCajaUsuario”, “SAUsuario”, “”, “NombreUsuario = ‘”.$_SESSION[‘user_name_auth’].”‘”);
        foreach ($query_caja as $data_caja):
        $id_caja = $data_caja->IdCajaUsuario;
        endforeach;
        $configuracion->update(“SACaja”, “RangoIniEgresoCaja = ‘”.$variable_serial.”‘”, “IdCaja = ‘”.$id_caja.”‘”);*/
        $pdf->AutoPrint(true);
        $pdf->Output();

        ?>
        gracias por la pronta respuesta

        Me gusta

        • sistemasumma dijo:

          el uso de headers al inicio del código puede ser el problema, no puedes tener salidas HTML Y salidas pdf al mismo tiempo.

          Me gusta

        • hola buenos dias, el header del comienzo del codigo lo utilizo para redireccionar despues de 10 segundos de la visualizacion del pdf a la pagina donde fue generado, ya no me esta generando problemas, la impresion ya no sale en blanco, el problema qeu tengo ahora, es qeu no me toma la configuracion, es decir la impresion sale mas grande qeu la hoja, y la letra sale muy diferente. agradeceria si pueden ayudarme con esto buen dia

          Me gusta

        • sistemasumma dijo:

          tienes la carpeta con las fuentes que usa el fpdf en la misma carpeta donde esta tu pagina?

          Me gusta

      • buenos dias si claro en la carpeta de la libreria en font, shi tengo las fuentes qeu agregue, es que cuando descargo el pdf y lo envio a imprimir sale bn el problema radica es cuando lo envio desd la visualizacion del navegador, para firefox hay algun otro visualizador?? diferente al de acrobat?

        Me gusta

        • sistemasumma dijo:

          ve a la configuración de firefox y ahí hay una pestaña con los programas predeterminados para cada extensión, en ella ubicas los PDF y si dice que los va a abrir con el visualizados de firefox, cambiado a que lo muestre con Adobe acrobat

          Me gusta

  9. Anónimo dijo:

    hola byuenas trdes veo qeu el foro es algo antiguo espero qeu aun lo revisen, tengo un problema con la impresion , estoy utilizando el autoprint de la libreria fpdf, me general el archivo abre la ventana, pero le doy imprimir, y al momento de empezara imprimir no lo hace, pasa la pagina en blanco agradeceria si me pudieran colaborara exitos

    Me gusta

  10. Ernesto dijo:

    Fatal error: Call to undefined method FPDF::AutoPrint()

    Me aparece esto

    Me gusta

  11. falex dijo:

    ya se quito el error anterior ahora me dice que ah ocurrido un error al cargar el pdf y no hace nada

    Me gusta

    • sistemasumma dijo:

      revisa que las librerias del FPDF y del componente que se modifica en este ejercicio esten en la misma carpeta junto con el PHP que usas para contruir el PDF, ahora bien, veo que usas el Internet Information Server, recuerda que este por defecto no soporta PHP y debes instalarselo.

      Me gusta

  12. falex dijo:

    Warning: Cannot modify header information – headers already sent by (output started at C:\AppServ\www\tic\pdf_js.php:53) in C:\AppServ\www\tic\pdf\fpdf.php on line 533

    Warning: Cannot modify header information – headers already sent by (output started at C:\AppServ\www\tic\pdf_js.php:53) in C:\AppServ\www\tic\pdf\fpdf.php on line 534

    Warning: Cannot modify header information – headers already sent by (output started at C:\AppServ\www\tic\pdf_js.php:53) in C:\AppServ\www\tic\pdf\fpdf.php on line 535
    2 0 obj <> endobj 3 0 obj <> stream 2.834646 0 0 2.834646 0 841.9 cm 2 J 0.2 w BT /F1 4.23 Tf ET BT 90 -50 Td (Print me!) Tj ET

    Me gusta

  13. cesar ramirez dijo:

    Que tal, me funcionó hasta la parte que genera el pdf, lo visualiza en el navegador, y manda automáticamente el cuadro de dialogo de impresión, Pero entiendo que al usar pdf->AutoPrint( false ) debería mandarse a imprimir sin visualizar nada, y eso no logro hacerlo funcionar. Que podrà ser?

    Me gusta

    • sistemasumma dijo:

      al usar autoprint con el valor false, el PDF si se vera en pantalla, pero el cuadro de dialogo de imprimir no aparecerá, ahora bien, al parecer en alguna actualización del plug-in de acrobat reader, se ha añadido una medida se seguridad que no se puede saltar, que hace que hace que aparezca una ventana que nos pide confirmación para mandar a imprimir, pero que no es el cuadro de dialogo convencional, solo es una venta de advertencia con los botones de aceptar y cancelar

      Me gusta

  14. rimrim dijo:

    Muy bueno funciona solo que quiero hacer algo y nose como 😦 aqui me explico:

    De esta manera llamo al PDF_AutoPrint
    window.open(direccion+’../../ImprimirDirect.php’);

    Se abre otra pestaña en el navegador donde me muestra la ventana de impresion y a la vez el pdf.

    Lo que quiero esque una vez que se presione imprimir o cancelar en la ventana de impresion se cierre automaticamente la pestaña donde se genero el pdf.

    Le agradeceria de antemano por su colaboracion.

    Saludos =)

    Me gusta

    • sistemasumma dijo:

      lo que puedes hacer es que una vez que termines de crear tu PDF, mandes a ejecutar un javascript con la instrucción echo, algo asi como como echo(” window.close() “);

      Me gusta

      • rimrim dijo:

        Muchas gracias pero no se en que parte del codigo puedo ejecutar el script 😦 y lo que estoy haciendo es esto:

        $pdf=new PDF_AutoPrint();
        $pdf->AliasNbPages();
        $pdf->SetAutoPageBreak(true,7);
        $pdf->SetMargins(5,5,5);
        $pdf->SetLineWidth(.3);
        $pdf->SetDrawColor(0,0,0);
        $pdf->AliasNbPages();
        $pdf->AutoPrint(true);
        $pdf->Output();

        echo(“window.close()”);

        Y cuando hago esto no llega a ejecutarse el script solo llega hasta $pdf->Output();

        Y probe de esta otra manera:

        $pdf=new PDF_AutoPrint();
        $pdf->AliasNbPages();
        $pdf->SetAutoPageBreak(true,7);
        $pdf->SetMargins(5,5,5);
        $pdf->SetLineWidth(.3);
        $pdf->SetDrawColor(0,0,0);
        $pdf->AliasNbPages();
        $pdf->AutoPrint(true);

        echo(“window.close()”);

        $pdf->Output();

        Y me sale este error: window.close()FPDF error: Some data has already been output, can’t send PDF file 😦

        Me gusta

      • rimrim dijo:

        Muchas gracias pero aun no me funciona 😦 lo hice asi:

        $pdf=new PDF_AutoPrint();
        $pdf->AliasNbPages();
        $pdf->SetAutoPageBreak(true,7);
        $pdf->SetMargins(5,5,5);
        $pdf->SetLineWidth(.3);

        $pdf->SetDrawColor(0,0,0);

        $pdf->AliasNbPages();

        $pdf->AutoPrint(true);
        $pdf->Output();
        echo(“window.close();”);

        Al parecer el $pdf->Output(); es como el return de java y ya no se ejecuta las lineas de abajo 😦 Ayuda 😦

        Me gusta

      • rimberth22 dijo:

        No se ve pero el window.close() ya esta con las etiquetas script

        Me gusta

      • rimberth22 dijo:

        esta asi ” echo(“window.close();”); “

        Me gusta

      • rimberth22 dijo:

        No se visualiza las etiquetas 😦 pero el echo(“window.close();”); ya esta con las etiquetas script 😦 lo siento 😦

        Me gusta

        • sistemasumma dijo:

          la solución mas simple a tu situación que veo de momento seria que en lugar de abrir el PHP con window.open, mandaras a abrir un HTML en el cual tengas un iframe que cargue tu PHP, eso te permitira que puedas ejecutar codigo javascript en el evento onload de tu pagina y el plugin de Adobe solo se ejecute en el iframe, el cierre lo puedes programar con un setTimeOut de medio segundo, el cuadro de dialogo de la impresion evitara que la ventana que el javascript que cierra la ventana se ejecute dandote el efecto de que se cierra al darle imprimir o cancelar

          Me gusta

  15. Si también yo quiero que se cierre la ventana del navegador después de imprimir pero no lo consigo, ¿puedes ayudarme por favor?

    Muchas gracias.

    Me gusta

  16. Xavier Gubianas dijo:

    Buenas tardes,

    Este script funciona muy bien. Pero sabéis la manera de que una vez se imprime, se pueda cerrar la ventana. Lo he probado de mil formas y no hay manera….

    Agradecería mucho un poco de información.

    saludos desde Catalunya

    Me gusta

    • sistemasumma dijo:

      bueno,no estoy seguro de haber entendido tu pregunta pero si lo que deseas es que después de imprimir se cierre la venta del navegador, puedes recurrir a javascript usando window.close, o si deseas que te mande a otra pagina puedes usar el atributo window.location para cambiar la dirección del navegador. Espero que te sea de ayuda, avisanos si podemos ayudarte con algo mas y nos encanta tu tierra, saludos desde México

      Me gusta

¿Qué estas pensando?

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s