Generación de informes PDF en PHP: eligiendo una biblioteca
La creación de documentos PDF es una de las tareas más demandadas en el desarrollo web. Facturas, actas, informes estadísticos, listas de precios: todo esto a menudo debe generarse dinámicamente en el lado del servidor. PHP ofrece varias bibliotecas maduras para la generación de PDF. En este artículo, analizaremos las tres herramientas más populares: FPDF, TCPDF y Dompdf, y también proporcionaremos ejemplos prácticos de código.
1. FPDF — clásico ligero y rápido
FPDF es una biblioteca simple que no requiere dependencias externas. Es ideal para informes básicos: texto, tablas, imágenes simples. Características principales:
- Funciona sin instalar extensiones adicionales (excepto la GD estándar para imágenes).
- Soporta UTF-8 a través de un plugin separado (tFPDF) o conversión manual de fuentes.
- Excelente rendimiento en documentos simples.
Ejemplo de creación de un informe PDF simple con tabla:
<?phprequire('fpdf.php');
$pdf = new FPDF();$pdf->AddPage();$pdf->SetFont('Arial', 'B', 16);$pdf->Cell(40, 10, 'Informe de ventas', 0, 1);$pdf->SetFont('Arial', '', 12);
// Encabezados de tabla$pdf->Cell(40, 10, 'Producto', 1);$pdf->Cell(30, 10, 'Cantidad', 1);$pdf->Cell(40, 10, 'Precio', 1);$pdf->Ln();
// Datos$pdf->Cell(40, 10, 'Portátil', 1);$pdf->Cell(30, 10, '5', 1);$pdf->Cell(40, 10, '45000 RUB', 1);$pdf->Ln();$pdf->Cell(40, 10, 'Ratón', 1);$pdf->Cell(30, 10, '10', 1);$pdf->Cell(40, 10, '1200 RUB', 1);
$pdf->Output('D', 'report.pdf');?>2. TCPDF — herramienta potente para informes complejos
TCPDF es una versión mejorada de FPDF con soporte para UTF-8, CSS, etiquetas HTML, códigos QR, firmas digitales y mucho más. Se recomienda para:
- Documentos con cirílico y otras fuentes no latinas.
- Informes con maquetación anidada (encabezados y pies de página, tablas multipágina).
- Generación de PDF/A para archivado.
Ejemplo de uso de marcado HTML en TCPDF:
<?phprequire_once('tcpdf/tcpdf.php');
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);$pdf->SetCreator('PythonLib');$pdf->SetAuthor('Desarrollador');$pdf->SetTitle('Informe complejo');
$pdf->AddPage();$html = '<h2>Estadísticas del mes</h2><table border="1" cellpadding="5"><tr><th>Parámetro</th><th>Valor</th></tr><tr><td>Visitantes</td><td>12 450</td></tr><tr><td>Pedidos</td><td>342</td></tr></table><p>Generado <strong>automáticamente</strong>.</p>';
$pdf->writeHTML($html, true, false, true, false, '');$pdf->Output('stat.pdf', 'I');?>3. Dompdf — generación desde HTML/CSS
Dompdf es una biblioteca única que renderiza PDF a partir de HTML y CSS comunes. Es la opción ideal si ya tienes la maquetación del informe (por ejemplo, para imprimir desde el navegador). Soporta:
- CSS 2.1 y parcialmente CSS 3 (float, position, border-radius).
- Inserción de imágenes (base64 o por URL).
- Tablas, listas, documentos multipágina.
Ejemplo de conversión de una plantilla HTML a PDF:
<?phprequire 'vendor/autoload.php';
use Dompdf\\Dompdf;
$dompdf = new Dompdf();$html = '<html><head> También en la biblioteca
Trabajo con CSV en Swift (iOS/macOS) — bibliotecas y ejemplos de código
Trabajo con imágenes en Go (Golang): bibliotecas y ejemplos
Elasticsearch .NET para C#: guía completa con ejemplos prácticos
Geolocalización y mapas en TypeScript: bibliotecas, API y ejemplos de código
Disruptor Java: guía completa con ejemplos prácticos