Geração de relatórios PDF em PHP: visão geral de bibliotecas e ferramentas
Criar documentos PDF é uma das tarefas frequentes no desenvolvimento web com PHP. Seja para gerar faturas, relatórios, certificados ou simplesmente exportar dados para um formato imprimível, o PHP oferece várias soluções maduras. Neste artigo, vamos analisar quatro bibliotecas principais: TCPDF, FPDF, Dompdf e mPDF. Você conhecerá suas características, pontos fortes e obterá exemplos de código para cada uma.
1. FPDF — o clássico leve e rápido
FPDF é, provavelmente, a biblioteca mais conhecida para geração de PDF em PHP. Ela não requer extensões externas, funciona "pronta para uso" e se destaca pela alta velocidade. A principal desvantagem é o suporte limitado a estilos CSS complexos e HTML.
Exemplo de criação de um relatório PDF simples com tabela:
<?phprequire_once('fpdf.php');
$pdf = new FPDF();$pdf->AddPage();$pdf->SetFont('Arial', 'B', 16);$pdf->Cell(40, 10, 'Relatório de Vendas');$pdf->Ln(20);
$pdf->SetFont('Arial', '', 12);// Cabeçalhos da tabela$pdf->Cell(60, 7, 'Produto', 1);$pdf->Cell(30, 7, 'Quantidade', 1);$pdf->Cell(40, 7, 'Preço', 1);$pdf->Ln();
// Dados$items = [ ['Notebook', 5, 45000], ['Mouse', 10, 1200], ['Teclado', 7, 2500]];
foreach ($items as $item) { $pdf->Cell(60, 7, $item[0], 1); $pdf->Cell(30, 7, $item[1], 1); $pdf->Cell(40, 7, $item[2] . ' R$', 1); $pdf->Ln();}
$pdf->Output();?>Quando usar: para relatórios simples, onde não é necessária uma diagramação complexa, mas a velocidade e o tamanho pequeno do arquivo são importantes.
2. TCPDF — ferramenta poderosa para PDFs complexos
TCPDF é um fork do FPDF com recursos estendidos. Ele suporta Unicode, JPEG2000, QR codes, SVG, além de trabalhar com HTML e CSS (de forma limitada). A biblioteca é ativamente desenvolvida e usada em sistemas como Drupal e Moodle.
Exemplo de geração de relatório usando marcação HTML:
<?phprequire_once('tcpdf/tcpdf.php');
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);$pdf->SetCreator(PDF_CREATOR);$pdf->SetAuthor('Sua empresa');$pdf->SetTitle('Relatório Mensal');
$pdf->AddPage();$html = '<h2>Relatório Mensal</h2><table border="1" cellpadding="5"> <tr style="background-color:#cccccc;"> <th>Indicador</th><th>Valor</th> </tr> <tr> <td>Receita</td><td>R$ 1.200.000,00</td> </tr> <tr> <td>Despesas</td><td>R$ 850.000,00</td> </tr> <tr> <td>Lucro</td><td><strong>R$ 350.000,00</strong></td> </tr></table><p>Data de geração: ' . date('d/m/Y') . '</p>';
$pdf->writeHTML($html, true, false, true, false, '');$pdf->Output('relatorio.pdf', 'I');?>Quando usar: para documentos complexos com tabelas, imagens, fontes não padrão e suporte a caracteres cirílicos.
3. Dompdf — transformando HTML em PDF
Dompdf é uma biblioteca que renderiza uma página HTML em PDF. Ela suporta CSS2.1 e parcialmente CSS3, permitindo criar relatórios usando a diagramação habitual. Ideal para converter templates HTML prontos.
Exemplo de criação de relatório a partir de um template HTML:
<?phprequire_once 'dompdf/autoload.inc.php';use Dompdf\\Dompdf;
$dompdf = new