Geração de relatórios PDF em PHP: guia completo para desenvolvedores
Criar documentos PDF é uma das tarefas mais requisitadas no desenvolvimento web. Relatórios, faturas, certificados, materiais didáticos — tudo isso frequentemente precisa ser gerado dinamicamente no lado do servidor. O PHP oferece várias bibliotecas poderosas que permitem criar PDFs de qualquer complexidade. Neste artigo, vamos analisar quatro ferramentas populares: TCPDF, FPDF, Dompdf e mPDF, além de fornecer exemplos práticos de código.
Por que gerar PDF em PHP?
PDF (Portable Document Format) é um formato universal que é exibido corretamente em qualquer dispositivo. Em projetos educacionais, como o PythonLib, os relatórios PDF podem ser usados para:
- Exportar resultados de testes e exames
- Criar certificados de conclusão de cursos
- Gerar materiais didáticos e resumos
- Elaborar relatórios estatísticos para professores
Visão geral das bibliotecas populares
1. TCPDF
TCPDF é uma das bibliotecas mais poderosas e maduras para trabalhar com PDF em PHP. Ela suporta:
- Conjunto completo de recursos do PDF 1.7
- Incorporação de fontes (incluindo Unicode e cirílico)
- Desenho de gráficos, tabelas, QR codes
- Suporte a CSS (limitado)
Exemplo de uso básico:
require_once('tcpdf/tcpdf.php');
$pdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8', false);$pdf->SetCreator('PythonLib');$pdf->SetAuthor('Desenvolvedor');$pdf->SetTitle('Relatório de teste');
$pdf->AddPage();$pdf->SetFont('dejavusans', '', 14);$pdf->Cell(0, 10, 'Olá, mundo! Este é um relatório PDF.', 0, 1, 'C');
$pdf->Output('report.pdf', 'I');2. FPDF
FPDF é uma biblioteca leve e rápida, ideal para documentos simples. Suas principais características:
- Não requer dependências externas
- API simples para adicionar texto, imagens e linhas
- Suporte a UTF-8 através de pacotes adicionais
Exemplo de criação de tabela:
require('fpdf/fpdf.php');
$pdf = new FPDF();$pdf->AddPage();$pdf->SetFont('Arial', 'B', 16);$pdf->Cell(40, 10, 'Nome', 1);$pdf->Cell(40, 10, 'Pontos', 1);$pdf->Ln();$pdf->SetFont('Arial', '', 12);$pdf->Cell(40, 10, 'João', 1);$pdf->Cell(40, 10, '95', 1);$pdf->Output();3. Dompdf
Dompdf permite converter HTML+CSS em PDF. Isso é conveniente se você já usa mecanismos de template (por exemplo, Twig). Recursos:
- Suporte a CSS 2.1 e parcialmente CSS3
- Trabalho com imagens e fontes
- Integração simples com aplicações web
Exemplo com template HTML:
use Dompdf\\Dompdf;
$dompdf = new Dompdf();$html = '<h2 style="color:blue;">Relatório do curso Python</h2> <p>Aluno: Alex, resultado: 87%</p>';$dompdf->loadHtml($html, 'UTF-8');$dompdf->setPaper('A4', 'portrait');$dompdf->render();$dompdf->stream('report.pdf');4. mPDF
mPDF é outra biblioteca para converter HTML em PDF. Ela suporta estilos complexos, Unicode, além de:
- Criação automática de sumário
- Marcas d'água e fundos
- Trabalho com grandes volumes de dados
Exemplo com folha de estilos:
require_once __DIR__ . '/vendor/autoload.php';
$mpdf = new \\Mpdf\\Mpdf();$mpdf->WriteHTML('<h1>Estatísticas</h1> Também na biblioteca
Gerador de QR Codes em Rust: biblioteca qr_code
Filas de Tarefas em Swift: GCD, OperationQueue e Swift Concurrency
Geolocalização e Mapas em C++: Visão Geral de Bibliotecas e Ferramentas
Trabalhando com CSV em Rust: biblioteca csv e processamento de dados