Generar un pdf con php – Ver Descargar Imprimir

Generar un pdf con php – Ver Descargar Imprimir

Hey! que tal! El día de hoy vamos a ver como realizar un sistema de generación de documentos pdf con la opción de ver estos archivos, descargarlos o mandarlos a imprimir directamente a la impresora. Esto lo haremos integrando en nuestro proyecto la librería gratuita fpdf ( free pdf ) la cual nos permite fácilmente generar un pdf desde php, puedes generar con esta librería pdfs con texto, imágenes, lineas ,gráficos de barras o pastel, etc.. Esta necesidad surge cotidianamente en muchas empresas hoy en día y es nuestra tarea estar dando solución gratuita y fácil a este problema, te animas a realizar este proyecto y generar un pdf con php? 😛

Lo que haremos

Básicamente lo que haremos sera tener una pagina en la que se mostrara un nombre de archivo el cual podremos visualizar de 3 formas diferentes:

  • Ver en linea directamente en el navegador.
  • Descargar a nuestra maquina
  • Mandar a imprimir

Estas 3 tareas estarán asociadas a 3 botones al lado de cada nombre de archivo pdf que sera generado.

vamos ya..

Lo básico

Primero, para generar un pdf con php necesitamos nuestro código html de la pagina donde estará la lista de archivos con sus 3 respectivas opciones que se visualizara mas o menos así:


¿Sabías que?

¿Necesitas hosting wordpress? WebEmpresa te ofrece un servicio super rápido, excelente soporte en español y certificado SSL gratuito:

WebEmpresa

generar un pdf con php

el código que genera esto es el siguiente:

<style>
#tabla_facturas{
width:550px;
text-align: center;
overflow:hidden;
}
#tabla_facturas tr{
border-bottom: 1px solid #C0C0C0;
}
#tabla_facturas button{
background-color: #fff;
color:#7AC143;
border:1px solid #7AC143;
}
.tabla_facturas_archivo{
width:40%;
padding-top:10px;
padding-bottom:10px;
text-align: left;
padding-left: 5px;
}
.tabla_facturas_ver{
width:20%;
}
.tabla_facturas_descargar{
width:20%;
}
.tabla_facturas_imprimir{
width:20%;
}
</style>

<table id="tabla_facturas">
<tr><th style="text-align:left;padding-left:10px;padding-bottom:20px;">Nombre del Archivo</th><th><img src="ImagenesSitio/eye.png" width="15" height="15" /></th><th><img src="ImagenesSitio/download.png" width="15" height="15" /></th><th><img src="ImagenesSitio/print.png" width="15" height="15" /></th></tr>
<?php for($i=0;$i<5;$i++){ ?>
<tr>
<td class="tabla_facturas_archivo"><img src="ImagenesSitio/pdf-icon.png" width="15" height="15" />&nbsp;<span>5845268985.pdf</td><td class="tabla_facturas_ver"><form action="procesar-factura.php" method="post" target="_blank"><input type="hidden" name="id" value="5845268985" /><input type="hidden" name="accion" value="ver" /><button type="submit">Ver</button></form></td><td class="tabla_facturas_descargar"><form action="procesar-factura.php" method="post"><input type="hidden" name="id" value="5845268985" /><input type="hidden" name="accion" value="descargar" /><button type="submit">Descargar</button></form></td><td class="tabla_facturas_imprimir"><form action="procesar-factura.php" method="post" target="_blank"><input type="hidden" name="id" value="5845268985" /><input type="hidden" name="accion" value="imprimir" /><button type="submit">Imprimir</button></form></td>
</tr>
<?php } ?>
</table>

Básicamente se construye una tabla con filas que tiene el nombre del archivo y sus 3 opciones ( ver – descargar – imprimir ) y al dar click se mandan 2 valores: uno con el id del archivo ( que en este caso a modo de ejemplo es siempre el mismo) y la acción a realizar ( ver – descargar – imprimir ) al archivo procesar-factura.php.

Integrando fpdf

Para el archivo procesar-factura.php y generar un pdf con php necesitamos contar con la librería fpdf disponible en su web ( completamente gratuita ) e incluirla en nuestro proyecto.

Para incluirla en nuestro proyecto solo copiamos el archivo fpdf.php y la carpeta font en nuestro proyecto y hacemos referencia a ellos.

El código del archivo procesar-factura.php es el siguiente:

<?php
if(isset($_POST['id'])){
define('FPDF_FONTPATH','/fonts/font/');
require('fpdf.php');

/*********** Clase PDF_JAVASCRIPT basandose en FPDF ***********/
class PDF_JavaScript extends FPDF {
var $javascript;
var $n_js;
function IncludeJS($script) {
$this->javascript=$script;
}
function _putjavascript() {
$this->_newobj();
$this->n_js=$this->n;
$this->_out('<<');
$this->_out('/Names [(EmbeddedJS) '.($this->n+1).' 0 R]');
$this->_out('>>');
$this->_out('endobj');
$this->_newobj();
$this->_out('<<');
$this->_out('/S /JavaScript');
$this->_out('/JS '.$this->_textstring($this->javascript));
$this->_out('>>');
$this->_out('endobj');
}
function _putresources() {
parent::_putresources();
if (!empty($this->javascript)) {
$this->_putjavascript();
}
}
function _putcatalog() {
parent::_putcatalog();
if (!empty($this->javascript)) {
$this->_out('/Names <</JavaScript '.($this->n_js).' 0 R>>');
}
}
}
/****************************************************************/

/*************** Clase PDF_AutoPrint basandose en PDF_JavaScript *************/
class PDF_AutoPrint extends PDF_JavaScript{
function AutoPrint($dialog=false){
$param = ($dialog ? 'true' : 'false');
$script = "print($param);";
$this->IncludeJS($script);
}

function AutoPrintToPrinter($server,$printer,$dialog=false){
$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);
}
}
/****************************************************************************/

/* Creamos un nuevo objeto PDFAutoPrint que nos da la funcionalidad de imprimir y tambien las basicas de FPDF */
/*************** Construimos la factura ************************/
$pdf = new PDF_AutoPrint();
$pdf->SetFont('courier','',32);
$pdf->AddPage();
$pdf->Image('ImagenesSitio/algunaimagendecabecera.png' , 160 ,12, 30 , 9,'PNG', 'https://jonathanmelgoza.com');
$pdf->Cell(40,10,"Factura Empresa",15);
/****************************************************************/

/*********** Segun la accion elegida presentamos en formato vista, descarga o impresion *******************/
$action = $_POST['accion'];
switch($action){
case "ver":
$pdf->Output("factura-empresa.pdf","I");
break;
case "descargar":
$pdf->Output("factura-empresa.pdf","D");
break;
case "imprimir":
$pdf->AutoPrint(true);
$pdf->Output();
break;
}
/****************************************************/

}
?>

Aquí lo mas importante es ver como se genera la información contenida en el pdf y como se elige la presentación a mostrar el archivo, ya sea ver incrustado en el browser, forzar descarga o mandarlo a imprimir directamente.

Espero que hayan llegado hasta el final si les surge alguna pregunta, comentario o apoyo pueden dejarme un comentario y me pondré a ello.

Saludos!

Generar un pdf con php – Ver, Descargar e Imprimir

Clic para valorar esta información
[Total: 1 Promedio: 3]