¿Cómo generar un pdf con TCPDF, de modo que se abra automaticamente una vez generado?

publicado por: Anonymous

Estoy utilizando TCPDF, el cual me permite crear un pdf, pero el tema es que cuando se genera el pdf, se despliega la pantalla para guardarlo. Luego debo ir al directorio donde quedó guardado el pdf y abrirlo. Este comportamiento no es el que requiero. Lo que requiero es que cuando se genere el pdf, éste se abra en forma automática y luego se pueda enviar a imprimir o guardar.

Existe alguna forma de configurar TCPDF de modo que se comporte del modo que he explicado? Estoy bajo Jquery. Gracias.

Lo que tengo implementado hasta ahora es:

<?php  
$v1 = $_GET['respuesta'];
 function busca_datos($v)  
 {  
      $output = '';  
      $connect = mysqli_connect("localhost", "cuenta", "pass", "basedato");  
      $sql = "SELECT id_cliente, cedula, nombres, tel, dir FROM clientes ORDER BY id_cliente ASC";  
      $result = mysqli_query($connect, $sql);  
      while($row = mysqli_fetch_array($result))  
      {       
      $output .= '<tr>  
                          <td>'.$row["id_cliente"].'</td>  
                          <td>'.$row["cedula"].'</td>  
                          <td>'.$row["nombres"].'</td>  
                          <td>'.$row["tel"].'</td>  
                          <td>'.$row["dir"].'</td>  
                     </tr> 
                     <tr>
                        <td>Parametro1</td>
                        <td>'.$v.'</td>
                     </tr> 
                          ';  
      }  
      return $output;  
 }  
 if(isset($_POST["create_pdf"]))  
 {  
      require_once('tcpdf/tcpdf.php');           
      header('Content-type: application/pdf');
      $obj_pdf = new TCPDF('P', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);  
      $obj_pdf->SetCreator(PDF_CREATOR);  
      $obj_pdf->SetTitle("Export HTML Table data to PDF using TCPDF in PHP");  
      $obj_pdf->SetHeaderData('', '', PDF_HEADER_TITLE, PDF_HEADER_STRING);  
      $obj_pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));  
      $obj_pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));  
      $obj_pdf->SetDefaultMonospacedFont('helvetica');  
      $obj_pdf->SetFooterMargin(PDF_MARGIN_FOOTER);  
      $obj_pdf->SetMargins(PDF_MARGIN_LEFT, '5', PDF_MARGIN_RIGHT);  
      $obj_pdf->setPrintHeader(false);  
      $obj_pdf->setPrintFooter(false);  
      $obj_pdf->SetAutoPageBreak(TRUE, 10);  
      $obj_pdf->SetFont('helvetica', '', 12);  
      $obj_pdf->AddPage();  
      $content = '';  
      $content .= '  
      <h3 align="center">Ejemplo de generacion pdf</h3><br /><br />  
      <table border="1" cellspacing="0" cellpadding="5">  
           <tr>  
              <th>Cliente</th>  
              <th>Cedula</th>  
              <th>Nombre</th>  
              <th>Telefono</th>
              <th>Direccion</th>
           </tr>
      ';  
      $content .= busca_datos($v1);  
      $content .= '</table>';  
      $obj_pdf->writeHTML($content);  
      $nombre='Archivo_'.$v1.'_'.date("d-m-Y H-i-s").'.pdf';
      $obj_pdf->Output($nombre, 'D');      
 }   
 ?>  
 <!DOCTYPE html>  
 <html>  
      <head>  
           <title>Exportando a PDF desde PHP</title>  
           <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">            
      </head>  
      <body>  
           <br /><br />  
           <div class="container" style="width:700px;">  
                <h3 align="center">Ejemplo de generacion pdf</h3><br />  
                <div class="table-responsive">  
                     <table class="table table-bordered">  
                          <tr>  
                               <th>Cliente</th>  
                               <th>Cedula</th>  
                               <th>Nombre</th>  
                               <th>Telefono</th>
                               <th>Direccion</th>
                          </tr>  
                     <?php  
                     echo busca_datos($v1);  
                     ?>  
                     </table>  
                     <br />  
                     <form method="post">  
                          <input type="submit" name="create_pdf" class="btn btn-danger" value="Crear PDF" />  
                     </form>  
                </div>  
           </div>  
      </body>  
 </html>  

Como se puede ver, el código tiene dos partes. La primera genera una tabla en pantalla. La segunda, dibuja la misma tabla en el pdf que se genera.

solución

Para la descarga podes usar:

$pdf->Output("Plan General Trabajo.pdf", 'D');

Colocar el encabezado:

header('Content-type: application/pdf');

Y poder visualizar en tu navegador web, sin utilizar plugins, si no una librería de mozilla.
Es compatible con los demás navegadores.

Y en la url en tu javascript escribís.

pdf/web/viewer.html?pdf=hola.pdf

Para obtener la librería PDF.js

Obs:

  • Se utiliza Debian Jessie de 64 bits.
  • Se asume que se tiene instalado Nodejs y NPM

Entramos a la terminal y tecleamos lo siguiente:

cd /var/www/html
git clone git://github.com/mozilla/pdf.js.git pdfjs
cd pdfjs
npm install
sudo npm install --global gulp-cli
node make generic

Obs:

  • Con los pasos anteriores se creará la carpeta build en la cual encontraremos el archivo PDF.js el cual nos servirá para cargar nuestros PDF desde la Web.
    Dentro del proyecto compilado existe la carpeta generic. Toda esa carpeta copia en la raíz de tu proyecto.
  • PDF.js está diseñado para ejecutarse desde un servicio web (ejemplo Apache2).
  • Si te complica obtener la librería lista para usar, podes descargar.

Ahora el codigo:

index.php

<!DOCTYPE html>
 <html>
      <head>
           <title>Exportando a PDF desde PHP</title>
           <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
      </head>
      <body onload="">
           <br /><br />
           <div class="container" style="width:700px;">
                <h3 align="center">Ejemplo de generacion pdf</h3><br />
                <div class="table-responsive">
                     <table class="table table-bordered">
                          <tr>
                               <th>Cliente</th>
                               <th>Cedula</th>
                               <th>Nombre</th>
                               <th>Telefono</th>
                               <th>Direccion</th>
                          </tr>
                     <?php
                         //echo busca_datos($v1);
                     ?>
                     </table>
                     <br />
                     <a href="generic/web/viewer.html?file=../../get_document.php" target="_blank">Crear PDF</a>
                </div>
           </div>
      </body>
 </html>

get_document.php

<?php
$v1 = $_GET['respuesta'];
 function busca_datos($v)
 {
      $output = '';
      $connect = mysqli_connect("localhost", "cuenta", "pass", "basedato");
      $sql = "SELECT id_cliente, cedula, nombres, tel, dir FROM clientes ORDER BY id_cliente ASC";
      $result = mysqli_query($connect, $sql);
      while($row = mysqli_fetch_array($result))
      {
      $output .= '<tr>
                          <td>'.$row["id_cliente"].'</td>
                          <td>'.$row["cedula"].'</td>
                          <td>'.$row["nombres"].'</td>
                          <td>'.$row["tel"].'</td>
                          <td>'.$row["dir"].'</td>
                     </tr>
                     <tr>
                        <td>Parametro1</td>
                        <td>'.$v.'</td>
                     </tr>
                          ';
      }
      return $output;
 }

require_once('tcpdf/tcpdf.php');
header('Content-type: application/pdf');
$obj_pdf = new TCPDF('P', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$obj_pdf->SetCreator(PDF_CREATOR);
$obj_pdf->SetTitle("Export HTML Table data to PDF using TCPDF in PHP");
$obj_pdf->SetHeaderData('', '', PDF_HEADER_TITLE, PDF_HEADER_STRING);
$obj_pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$obj_pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
$obj_pdf->SetDefaultMonospacedFont('helvetica');
$obj_pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
$obj_pdf->SetMargins(PDF_MARGIN_LEFT, '5', PDF_MARGIN_RIGHT);
$obj_pdf->setPrintHeader(false);
$obj_pdf->setPrintFooter(false);
$obj_pdf->SetAutoPageBreak(TRUE, 10);
$obj_pdf->SetFont('helvetica', '', 12);
$obj_pdf->AddPage();
$content = '';
$content .= '
<h3 align="center">Ejemplo de generacion pdf</h3><br /><br />
<table border="1" cellspacing="0" cellpadding="5">
     <tr>
        <th>Cliente</th>
        <th>Cedula</th>
        <th>Nombre</th>
        <th>Telefono</th>
        <th>Direccion</th>
     </tr>
';
$content .= busca_datos($v1);
$content .= '</table>';
$obj_pdf->writeHTML($content);
$nombre='Archivo_'.$v1.'_'.date("d-m-Y H-i-s").'.pdf';
$obj_pdf->Output($nombre, 'D');

Con todo esoResultado

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *