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.
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.
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:
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:
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
Las fuentes que por defecto podremos colocar son:
- Arial.
- Times
- Helvetica
- Courier
- Symbol
- ZapfDingbats
- B para negritas.
- I para itálicas.
- U para subrayado.
$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.