Geração de relatórios PDF em PHP: escolhendo a biblioteca
Criar documentos PDF é uma das tarefas mais requisitadas no desenvolvimento web. Faturas, atas, relatórios estatísticos, listas de preços — tudo isso muitas vezes precisa ser gerado dinamicamente no lado do servidor. O PHP oferece várias bibliotecas maduras para geração de PDF. Neste artigo, vamos analisar as três ferramentas mais populares: FPDF, TCPDF e Dompdf, além de fornecer exemplos práticos de código.
1. FPDF — o clássico leve e rápido
FPDF é uma biblioteca simples que não requer dependências externas. É ideal para relatórios básicos: texto, tabelas, imagens simples. Principais características:
- Funciona sem instalar extensões adicionais (além do GD padrão para imagens).
- Suporta UTF-8 através de um plugin separado (tFPDF) ou conversão manual de fontes.
- Excelente desempenho em documentos simples.
Exemplo de criação de um relatório PDF simples com tabela:
<?phprequire('fpdf.php');
$pdf = new FPDF();$pdf->AddPage();$pdf->SetFont('Arial', 'B', 16);$pdf->Cell(40, 10, 'Relatório de Vendas', 0, 1);$pdf->SetFont('Arial', '', 12);
// Cabeçalhos da tabela$pdf->Cell(40, 10, 'Produto', 1);$pdf->Cell(30, 10, 'Quantidade', 1);$pdf->Cell(40, 10, 'Preço', 1);$pdf->Ln();
// Dados$pdf->Cell(40, 10, 'Notebook', 1);$pdf->Cell(30, 10, '5', 1);$pdf->Cell(40, 10, 'R$ 45.000,00', 1);$pdf->Ln();$pdf->Cell(40, 10, 'Mouse', 1);$pdf->Cell(30, 10, '10', 1);$pdf->Cell(40, 10, 'R$ 1.200,00', 1);
$pdf->Output('D', 'report.pdf');?>2. TCPDF — ferramenta poderosa para relatórios complexos
TCPDF é uma versão avançada do FPDF com suporte a UTF-8, CSS, tags HTML, códigos QR, assinaturas digitais e muito mais. Recomendado para:
- Documentos com cirílico e outras fontes não latinas.
- Relatórios com layout complexo (cabeçalhos e rodapés, tabelas de várias páginas).
- Geração de PDF/A para arquivamento.
Exemplo de uso de marcação HTML no 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('Desenvolvedor');$pdf->SetTitle('Relatório Complexo');
$pdf->AddPage();$html = '<h2>Estatísticas do Mês</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>Gerado <strong>automaticamente</strong>.</p>';
$pdf->writeHTML($html, true, false, true, false, '');$pdf->Output('stat.pdf', 'I');?>3. Dompdf — geração a partir de HTML/CSS
Dompdf é uma biblioteca única que renderiza PDF a partir de HTML e CSS comuns. É a escolha ideal se você já tem o layout do relatório (por exemplo, para impressão no navegador). Suporta:
- CSS 2.1 e parcialmente CSS 3 (float, position, border-radius).
- Incorporação de imagens (base64 ou por URL).
- Tabelas, listas, documentos de várias páginas.
Exemplo de conversão de template HTML em PDF:
<?phprequire 'vendor/autoload.php';
use Dompdf\\Dompdf;
$dompdf = new Dompdf();$html = '<html><head> Também na biblioteca
Trabalho com imagens em PHP: redimensionamento, corte e otimização com GD e Imagick
Biblioteca Padrão Go (Golang): Visão Geral Completa
Cache em TypeScript: Redis, Memcached e soluções in-memory
Programação Reativa em Kotlin: Biblioteca RxKotlin e Corrotinas
Geração de PDF em C# (.NET): Visão geral de bibliotecas e ferramentas