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

 

 

 

 

56 Comments

  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. 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. 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

      1. 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. 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

      1. 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

        1. 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

  5. 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

  6. 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

    1. 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

  7. 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

      1. 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

      2. 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

        1. 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

    1. 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. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.