Crea pdf con FPDF

Generar un PDF en PHP con FPDF

¿Como puedo generar un PDF en PHP?

Buenas, pues la respuesta a esta pregunta de cómo podemos generar un pdf en PHP  la tenemos con una herramienta que se puede implementar a cualquier script que tengamos de forma fácil y sencilla. Os cuento mi experiencia:

Hace un tiempo tuve que desarrollar una aplicación web para la gestión de alumnos de una entidad deportiva, y uno de los factores importantísimos en dicha aplicación radicaba en poder realizar reportes en pdf para poder guardarlos e imprimirlos. La aplicación naturalmente estaba en PHP, con lo que comencé a ver posibles maneras. Estuve viendo varias librerías y opciones para poder hacer dichas funciones y al final me decanté por la que me ofrecía mayor flexibilidad y a su vez mayor sencillez, FPDF.

Generar un PDF en PHPPara empezar os explicaré de forma rápida que és FPDF.

FPDF está definida como una “clase” escrita en PHP de código libre (de ahí la “F” (free) del nombre…) que nos permite (una vez instalada en nuestro servidor) generar documentos en PDF desde cualquier parte de nuestros archivos PHP.  En su web nos indican las características principales, de las cuales a mí personalmente me llamaron la atención por su funcionalidad las siguientes:

  • Elección de la unidad de medida, formato de página y márgenes
  • Gestión de cabeceras y pies de página (A mí me fué muy útil para personalizar la aplicación…)
  • Salto de página automático
  • Salto de línea y justificación del texto automáticos
  • Admisión de imágenes JPEG, PNG y GIF (Esto permite por ejemplo poner una imagen de fondo a nuestro pdf…)

Pero vamos al asunto, nosotros lo que queremos es generar un PDF en PHP, así que… ¿que pasos hay que seguir para instalar FPDF en nuestro servidor?; lo primero es descargar la aplicación des de su página oficial (no me canso de decir esto, descargar todo desde las web oficiales…), el enlace de descarga… aquí.

1- Descomprimimos el archivo rar se nos quedará una carpeta que contendrá lo siguiente:

         Una carpeta llamada “doc”, otra “font”, otra “makefont”, otra “tutorial” y 6 archivos:

         changelog.htm, FAQ.htm, fpdf.css, fpdf.php, install.txt y license.txt.

         De aquí utilizaremos para subirlas al servidor únicamente las carpetas, el fpdf.css y el archivo fpdf.php. El resto se pueden ignorar

2- Subimos via FTP los archivos a nuestro servidor. Yo los ubiqué en una carpeta a la que llamé /pdf/, pero vamos podéis ponerle el nombre que queráis.

3- Vamos a asociar FPDF a nuestro script PHP. Pongamos un ejemplo:

Imaginemos que tenemos un formulario para dar de alta a alumnos y que recoge los datos para mandarlos debidamente ordenados a nuestra base de datos. Bien, ya tenemos base de datos y queremos hacer un pdf con los datos de un alumno en concreto. Bueno, en primer lugar listaremos los alumnos que tengamos en la base de datos e iremos a la ficha de uno de ellos.

Imaginemos que en la ficha del alumno que queremos mostrar hay los siguientes campos:

Nombre y Apellidos

Foto

Fecha de Nacimiento

Teléfono

Dirección

Ciudad

Categoría

Y queremos conseguir un pdf a modo de informe. Veamos cuál es el primer paso para “conseguir” ese Pdf.

Hay que añadir un pequeño formulario que nos lleve a FPDF, por ejemplo de la siguiente manera:

<form action=’listapdf.php’ method=’post’ target=’_blank’>//CREAMOS UN FORMULARIO CON DESTINO A ‘listapdf.php’
<table class=’tabla’>
<tr>
<td>REPORTE DATOS DE ALUMNO</td>
<td></td>
<td><input type=’text’ name=’nombre’ value=’$array_alumnos[1]’></td>
<td align=’right’><input type=’submit’ name=’submit’ value=’Imprimir Reporte’>
</td>
</tr>
</table>
</form>

Y AHORA EL ARCHIVO DE DESTINO “listapdf.php”, QUE ES EL QUE MOSTRARÁ NUESTRO FLAMANTE PDF:

<?php
require(‘pdf/fpdf.php’);  //AQUI  INCLUIMOS EL ARCHIVO PHP QUE ARMARÁ NUESTRO PDF

$pdf=new FPDF();       //CREA EL PDF
$pdf->SetMargins(10,20,5);   //ESTABLECE LOS MARGENES. SE DEFINEN LOS MARGENES IZQUIERDO, SUPERIOR Y DERECHO
$pdf->AddPage();          //AÑADE UNA NUEVA PAGINA
$pdf->Image(‘images/headerficha.jpg’,0,0,210,34, ”);     //ESTA ES UNA MANERA DE INCLUIR UNA IMAGEN EN EL ENCABEZADO LOS PARAMETROS SON X,Y (DESDE LA ESQUINA SUPERIOR IZQUIERDA), EL ANCHO Y EL ALTO
$pdf->Ln(8);   //SALTO DE LINEA. EL NUMERO INDICA LA ALTURA DEL SALTO
$pdf->SetFont(‘Arial’,’B’,14);  //ESTABLECEMOS LOS PARAMETROS DEL TIPO DE TEXTO
$pdf->Cell(192,10,”,0,0,’C’);  //ESTO IMPRIME UNA CELDA. LOS PARAMETROS SON: ANCHO, ALTO, TEXTO (DEBE IR ENTRE COMILLAS), BORDE, POSICION DENTRO DE LA CELDA Y ALINEADO DEL TEXTO
$pdf->Ln();  //IMPRIME UNA LINEA EN BLANCO, COMO UN <BR>
include “includes/funciones.php”;   //EN ESTE EJEMPLO LLAMAMOS AL ARCHIVO PHP ENCARGADO DE CONECTAR CON NUESTRA BD
$conex=conectar();
$nombre=$_POST[‘nombre’]; //RECOGEMOS LA VARIABLE NOMBRE DEL FORMULARIO
$sql=”SELECT  * from alumnos WHERE nombre=’$nombre’ “; //SELECCIONAMOS TODO DE LA TABLA ALUMNOS CON LA COINCIDENCIA DEL NOMBRE
$result=mysql_query($sql, $conex) or die(“Error en $sql <br>Mysql dice:”.mysql_error());
$pdf->Ln();
while($array_alumnos=mysql_fetch_array($result)){
$val=$array_alumnos[3];
$anyo=substr($val, 0, 4);
$mes=substr($val, 5, 2);
$dia=substr($val, 8, 2);
$ee = $array_alumnos[5];
if($ee==”){
$pdf->Image(‘images/nodisponible.jpg’,155,60,40,60,’jpg’); //ESTO MOSTRARA UNA IMAGEN GENERICA DE NO DISPONIBLE SI NO HAY FOTO DEL ALUMNO
}else{
$pdf->Image($ee,155,60,40,60,’jpg’); //SI EXISTE LA FOTO, LA MUESTRA EN BASE A LA SITUACIÓN QUE LE OTORGEMOS
}
$pdf->SetFont(‘Arial’,’B’,16);  //JUGAMOS UN POCO CON EL TEXTO PARA MOSTRAR EL NOMBRE Y APELLIDOS UN POCO MÁS GRANDES
$pdf->Cell(140,10,”.$array_alumnos[1].’ ‘.$array_alumnos[2].’  ‘,0,0,’L’);  //MOSTRAMOS DICHOS DATOS
$pdf->SetFont(‘Arial’,’B’,12);   //VOLVEMOS A ESTABLECER EL TAMAÑO DEL TEXTO A NUESTRO GUSTO
$pdf->SetTextColor(255,0,0);  //Y ADEMAS LE CAMBIAMOS EL COLOR (POR EJEMPLO ROJO PARA DARLE UN TOQUE DE DISTINCIÓN)
$pdf->Cell(10,10,’Categoría: ‘.$array_alumnos[11].’ ‘,0,0,’L’);    //AHORA MOSTRAMOS LA CATEGORIA EN ROJO
$pdf->Ln(20); //CAMBIAMOS DE LINEA
$pdf->SetTextColor(0,0,0);    //VOLVEMOS A ESTABLECER EL COLOR
$pdf->Cell(140,10,’Fecha de Nacimiento:  ‘.$dia.’ de ‘.$mes.’ de ‘.$anyo.’ ‘,0,0,’L’);  //Y SEGUIMOS IMPRIMIENDO DATOS …
$pdf->Ln();
$pdf->Cell(140,10,’Domicilio:  ‘.$array_alumnos[7].’ de ‘.$array_alumnos[9].’, ‘.$array_alumnos[10].’ ‘,0,0,’L’);
$pdf->Ln();
$pdf->Cell(140,10,’Teléfono:  ‘.$array_alumnos[6].’ ‘,0,0,’L’);
$pdf->Ln(35);   //DAMOS UN POCO MÁS DE ESPACIO
$pdf->Cell(190,0,”,’T’);   // IMPRIMIMOS UNA LINEA A LO ANCHO DEL DOCUMENTO
$pdf->Ln(15);
$pdf->Ln();
}
$pdf->Ln(20);
$pdf->Output();    // CERRAMOS EL DOCUMENTO PDF
?>

Pues como veréis es muy sencillo generar un PDF en PHP. Sólo hay que subirlo al servidor e incluir esa clase en el documento que quieras generar como Pdf.