Aporte: Cómo crear PDFs con la librería FPDF [SOLUCIONADO]

Utilizando fpdf para Generar Documentos PDF en PHP

En el mundo de la programación web, la generación de archivos en formato PDF es una tarea recurrente y muchas veces indispensable. Para los desarrolladores que utilizan PHP, fpdf se convierte en una herramienta esencial que ofrece una solución sencilla y eficaz para esta necesidad. Crear documentos PDF desde PHP con la librería fpdf es un proceso que, una vez entendido, puede ser aplicado en diversos contextos, como la generación de reportes, facturas, certificados y cualquier otro documento digital que se desee presentar en forma consistente y portable.

Instalación y Configuración de fpdf

Antes de profundizar en cómo generar un documento PDF, es necesario realizar la instalación de la librería fpdf. Este proceso es sumamente sencillo y puede ejecutarse de diferentes maneras. Uno de los métodos más comunes y prácticos es la descarga directa del paquete desde su sitio oficial.

Descargue la librería desde el sitio oficial de fpdf.

Generando un Simple PDF

Una vez que fpdf está integrado en nuestro proyecto, podemos proceder a generar nuestro primer documento PDF. El siguiente ejemplo muestra un script básico en PHP que utiliza fpdf para crear un PDF simple.

<?php
require('fpdf.php');

$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial', 'B', 16);
$pdf->Cell(40, 10, '¡Hola, Mundo!');
$pdf->Output();
?>
        

Este script empieza cargando la librería con require('fpdf.php');, después se crea un objeto de la clase FPDF, se añade una página y se establece una fuente. Con Cell(), se adiciona una celda que contiene texto, y finalmente, se genera el documento PDF con Output().

Personalizando el PDF

Aunque el ejemplo anterior es muy simple, la librería fpdf posibilita la personalización del PDF en muchos aspectos, incluyendo tamaño de página, tipografías, colores, imágenes, y mucho más. El siguiente código muestra cómo generar un encabezado y un pie de página reutilizable.

<?php
class PDF extends FPDF {
    function Header() {
        // Logo
        $this->Image('logo.png',10,6,30);
        // Arial bold 15
        $this->SetFont('Arial','B',15);
        // Movernos a la derecha
        $this->Cell(80);
        // Título
        $this->Cell(30,10,'Título del documento',1,0,'C');
        // Salto de línea
        $this->Ln(20);
    }
    
    function Footer() {
        // Posición a 1,5 cm del final
        $this->SetY(-15);
        // Arial italic 8
        $this->SetFont('Arial','I',8);
        // Número de página
        $this->Cell(0,10,'Página '.$this->PageNo().'/{nb}',0,0,'C');
    }
}

$pdf = new PDF();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont('Times','',12);
for($i=1;$i<=40;$i++)
    $pdf->Cell(0,10,'Imprimiendo línea número '.$i,0,1);
$pdf->Output();
?>
        

En este fragmento, se crea una clase PDF que hereda de FPDF y en ella se redefine los métodos Header() y Footer(). Este nivel de personalización muestra la flexibilidad de fpdf para crear documentos adecuados a las necesidades de cada proyecto.

Tablas y Columnas en PDF

Los documentos complejos frecuentemente necesitan tablas para organizar la información. Generar tablas con fpdf requiere un poco más de manejo manual pero permite un resultado muy profesional.

<?php
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',12);
$pdf->Cell(40,10,'Encabezado 1',1);
$pdf->Cell(40,10,'Encabezado 2',1);
$pdf->Cell(40,10,'Encabezado 3',1);
$pdf->Ln();

$pdf->SetFont('Arial','',12);
foreach($data as $row) {
    $pdf->Cell(40,10,$row['column1'],1);
    $pdf->Cell(40,10,$row['column2'],1);
    $pdf->Cell(40,10,$row['column3'],1);
    $pdf->Ln();
}
$pdf->Output();
?>
        

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad