Cargando



Generación de archivos PDF con PHP

En este tutorial veremos cómo generar archivos PDF en PHP utilizando la librería FPDF.


dic 10 2014 03:54
Profesional
dic 10 2014 09:53
Los archivos PDF se han convertido prácticamente en un estándar en la web para la transmisión de documentos asegurándonos que no pierden el formato al cambiar de plataforma y que además se imprimirán exactamente de la forma en que se ven, además que no son modificables si hemos aplicado ciertos controles para los mismos.

Esto hace que cuando se nos pide generar una salida estilo reporte de algún sistema que hayamos creado en PHP, una de las opciones junto con la generación de un archivo CSV es la generación de un archivo PDF.

FPDF
Para poder solventar este problema podemos apoyarnos en la comunidad PHP y obtener la librería FPDF, la cual no necesita ninguna configuración en el servidor adicional. Esto hace que esta librería sea una gran ayuda y que podemos implementarla inclusive en servicios Share Hosting donde el acceso a configuración usualmente está limitado por el proveedor de servicios.


Crear nuestro primer PDF


Para crear nuestro primer documento PDF debemos asegurarnos primero de entender que es un archivo PDF. Sus siglas corresponden al inglés de Formato Portable de Documentos y fue creado por la empresa Adobe para facilitar la forma en que se comparten los diferentes documentos que podemos generar y que debemos enviar a otras personas.

Un PDF consiste de una cantidad de páginas que van desde una página hasta las que resista la memoria de nuestro equipo. Cada página va a contener texto, gráficos, colores, imágenes, etc. Al generar un PDF, este puede ser descargado desde el navegador o con algunos complementos puede ser leído y mostrado en línea directamente, por ello es que es tan poderoso, su único defecto y también una de sus más grandes virtudes es que no está hecho para ser modificado al momento.

Ya que hemos hecho nuestra tarea de entender la parte que va detrás y antes del código vamos a generar nuestro primer archivo. Vamos a crear un documento con una sola página y en esta vamos a incluir un pequeño texto.

¿Cómo hacerlo?
Para lograr el objetivo debemos crear un nuevo documento PHP y en su primera línea luego de la apertura de etiquetas debemos hacer la inclusión de la librería FPDF, esto lo vamos a hacer con la instrucción require() ya que de esta manera si no encontramos la librería el programa dará un error y así no habrá posibilidades que se ejecute algo y obtener un resultado no deseado.


Luego vamos a crear un objeto tipo FPDF sobre el cual vamos a aplicar algunos métodos, como por ejemplo addPage() para añadir una nueva hoja a nuestro futuro PDF, o cell() para crear una sección dentro de la hoja y finalmente output() que es quien envía el resultado al navegador.

Veamos el código ejemplo para que podamos entender todo lo que hemos explicado:

<?php
require("fpdf/fpdf.php");

$pdf = new FPDF();
$pdf->addPage();
$pdf->setFont("Arial", 'B', 18);
$pdf->cell(50, 20, "Hola!, Hemos Creado nuestro primer PDF!!");
$pdf->output();


Aquí lo único adicional que vemos es el método setFont() que nos permite elegir la familia de fuentes para el texto, su estilo, es decir, si es cursiva, en negritas itálicas y su tamaño en pixeles, en el caso del código hemos colocado Arial, B para negritas y un tamaño de 18 pixeles.

En el método cell() los primeros parámetros se refieren a la ubicación del texto dentro del documento y el último es el texto que debe aparecer. Finalmente output() nos da el resultado para ser mostrado. Al ejecutar esto en un servidor de pruebas, como por ejemplo Wamp, podemos ver un resultado similar a lo siguiente:


Podemos notar el set de controles en la parte superior que nos demuestran que el PDF fue interpretado por el navegador sin ningún problema.

Opciones avanzadas de generación del PDF


Lo que vimos nos puede funcionar para salir de un documento rápido y sin muchas exigencias, sin embargo eso no quiere decir que nuestros PDF no puedan ser más complejos y llegar a tener más detalles.

Al momento de crear la instancia de FPDF, podemos definir algunos parámetros en el constructor de la clase que nos pueden ayudar a darle más elementos que puedan variar el estilo de nuestro PDF, podemos ir de cosas tan básicas como por ejemplo cambiar la orientación del documento de la forma vertical a apaisada hasta cambiar el sistema métrico con el cual va a tomar las distancias.

Veamos algunas de las propiedades que podemos cambiar al momento de generar un PDF con FPDF en PHP:

Orientación
Tenemos dos posibles opciones P para la forma vertical o de retrato de ahí su inicial por Portrait Mode en inglés y tenemos L para el formato apaisado o Landscape también correspondiente al idioma inglés.


Unidad de medida
Para la unidad de medida tenemos tres opciones pt para puntos, in para pulgadas y cm para centímetros, dependiendo del país en que vivamos y de los resultados que deseamos podremos variar la unidad de medida a algo que se nos haga más cómodo.


Tamaño de la página
Otra característica vital ya que generalmente para la impresión de los documentos debemos establecer un tamaño adecuado para nuestro documento, aquí tenemos Letter para tamaño carta, Legal para tamaño oficio, luego tenemos otros formatos populares como A3, A5 o A4. Si nos adentramos en la documentación de FPDF inclusive podemos ver que hay la posibilidad de generar nuestros propios tamaños para la hoja.


Nuestro segundo PDF


Ya que hemos aprendido que existen características adicionales para generar nuestro documento, es hora de generar un nuevo ejemplo, para este vamos a aplicar las configuraciones en el constructor de la clase y además vamos a utilizar las coordenadas para ubicar los elementos en la hoja del mismo.

Las coordenadas (0,0) es un sistema que nos permite ubicar al elemento en un plano horizontal X y vertical Y de nuestro PDF con ello podremos controlar la ubicación de dichos elementos de forma exacta. Veamos el código para que podamos tener una noción de todo esto:

<?php
require("fpdf/fpdf.php");

$pdf = new FPDF('P', 'in', 'letter');
$pdf->addPage();
$pdf->setFont('Arial', 'B', 16);
$pdf->cell(0,0, "Esquina Sup. Izq.", 0, 0, 'L');
$pdf->cell(0,0, "Esquina Sup. Der.",0, 0, 'R');
$pdf->ln(2.5);
$pdf->cell(0, 0, "En la mitad", 0, 0, 'C');
$pdf->ln(5.3);
$pdf->cell(0, 0, "Abajo a la Izq.", 0, 0, 'L');
$pdf->cell(0, 0, "Abajo a la Der.", 0, 0, 'R');
$pdf->output();

En primer lugar vemos que luego que hemos incluido nuestra librería FPDF vamos a crear el objeto correspondiente, en el constructor de la clase le pasamos la orientación P, la unidad de medida in y por último el tamaño de hoja letter, luego agregamos una página y acto siguiente establecemos la fuente para el texto.

Con las coordenadas vamos a jugar un poco y las cambiamos para ver la diferencia con el eje vertical, a la derecha del método cell vemos unos números adicionales, estos se utilizan para crear líneas y la letra L, R, o C corresponde a la justificación del texto, es decir, alineado a la izquierda, a la derecha o al centro.

El método ln() nos permite pasarle una medida para que se genere un espacio, así en este ejemplo ln(2.5) va a desplazar 2.5 pulgadas antes del siguiente llamado al método cell() por eso vemos que en la generación del texto siguiente que dice En la mitad aparecerá mucho más abajo en el documento. Veamos como luce esto al ejecutarlo en el servidor local:

creacion-pdf-php2.jpg


Notamos en la parte superior como se ve nuestro juego con las coordenadas donde el primer texto está mucho más arriba que el segundo y los espacios generados en el documento. Si bajamos podemos visualizar la parte inferior de nuestro documento y la localización del texto que colocamos.

Fuentes y estilos incluidos
Ya que hemos visto como crear de forma básica un documento, vamos a ver que estilos de textos tenemos disponibles de forma inicial con nuestra librería FPDF.


Fuentes


Las fuentes que por defecto podremos colocar son:
  • Arial.
  • Times
  • Helvetica
  • Courier
  • Symbol
  • ZapfDingbats
Sin embargo podemos utilizar fuentes personalizadas simplemente al tener el archivo correspondiente a la misma y podemos agregarlas con el método addFont(). Los estilos que podemos utilizar son:
  • B para negritas.
  • I para itálicas.
  • U para subrayado.
Por ejemplo para incluir todos estos estilos basta con colocarlos uno al lado del otro en el momento en que definimos la fuente del texto:

$pdf->setFont("Courier", 'IBU', 10);

Notamos entonces que es muy fácil cambiar esto. Si además queremos añadir algún color, basta con invocar al método setTextColor y pasarle el código del mismo en formato RGB. Por ejemplo:

$pdf->setTextColor(255, 0, 0);

Para un color rojo de nuestro texto. Como tarea vamos a dejar que apliquen estas nuevas instrucciones en alguno de los PDF ya creados en el tutorial de forma que refuercen el conocimiento.

Con esto finalizamos, hemos aprendido a generar archivos PDF de una manera sencilla y muy rápida únicamente incluyendo una librería en nuestro proyecto en PHP. Es muy importante ver la documentación oficial de FPDF ya que ahí se destacan otras características que nos pueden ayudar a crear mejores documentos.

¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X