Geração de PDF em PHP: revisão de bibliotecas e exemplos práticos
Criar documentos PDF é uma das tarefas comuns no desenvolvimento web. De faturas e relatórios a certificados e livros, o PDF continua sendo um formato universal para troca de documentos. Em PHP, existem várias bibliotecas poderosas que permitem gerar PDF tanto a partir de HTML quanto programaticamente. Neste artigo, vamos analisar quatro ferramentas populares: TCPDF, FPDF, Dompdf e mPDF.
1. FPDF — clássico leve e rápido
FPDF é uma das bibliotecas mais antigas e simples. Ela não requer a instalação de extensões adicionais (além do GD). A principal vantagem é o minimalismo e a velocidade. O FPDF trabalha diretamente com coordenadas, o que dá controle total sobre o posicionamento dos elementos.
Exemplo de criação de um PDF simples:
<?phprequire('fpdf.php');
$pdf = new FPDF();$pdf->AddPage();$pdf->SetFont('Arial', 'B', 16);$pdf->Cell(40, 10, 'Olá, mundo!');$pdf->Output();?>Vantagens:
- Tamanho muito pequeno (cerca de 100 KB)
- Não requer dependências externas
- Suporte a UTF-8 através de fontes separadas
Desvantagens:
- Trabalho complexo com HTML
- Suporte limitado a CSS
2. TCPDF — poderoso e funcional
TCPDF é uma versão estendida do FPDF com suporte a UTF-8, HTML, CSS, imagens, códigos QR, assinaturas digitais e muito mais. É a escolha padrão para documentos complexos.
Exemplo com HTML:
<?phprequire_once('tcpdf/tcpdf.php');
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);$pdf->AddPage();$pdf->writeHTML('<h1>Título</h1><p>Este é um parágrafo com texto <b>negrito</b>.</p>');$pdf->Output('example.pdf', 'I');?>Características:
- Suporte completo a Unicode e RTL (árabe, hebraico)
- Fontes incorporadas (DejaVu, FreeSerif)
- Suporte a SVG, JavaScript, formulários
3. Dompdf — geração a partir de HTML/CSS
Dompdf converte HTML e CSS em PDF. É a escolha ideal se você já tem uma página ou template prontos. O Dompdf suporta a maioria das propriedades CSS, mas não todas (por exemplo, Flexbox e Grid podem funcionar incorretamente).
Exemplo:
<?phprequire 'vendor/autoload.php';
use Dompdf\\Dompdf;
$dompdf = new Dompdf();$html = '<h2 style="color:red;">Título vermelho</h2><p>Texto com margens.</p>';$dompdf->loadHtml($html);$dompdf->setPaper('A4', 'portrait');$dompdf->render();$dompdf->stream("document.pdf");?>Vantagens:
- Simplicidade: escreva HTML, obtenha PDF
- Bom suporte a tabelas e imagens
Desvantagens:
- Requer PHP 7.1+ e extensões mbstring, dom
- Layouts CSS complexos podem quebrar
4. mPDF — abordagem híbrida
mPDF é uma biblioteca que combina os recursos do TCPDF e do Dompdf. Ela funciona muito bem com HTML e CSS, suporta Unicode, tabelas, cabeçalhos e rodapés, marcas d'água. O mPDF é especialmente bom para criar livros e revistas.
Exemplo com CSS:
<?phprequire_once __DIR__ . '/vendor/autoload.php';
$mpdf = new \\Mpdf\\Mpdf();$html = '<div style="border:1px solid #000; padding:10px;">Conteúdo do bloco</div>';$mpdf->WriteHTML($html);$mpdf->Output('output.pdf', 'I');?>Vantagens:
- Excelente suporte a CSS 2.1 e parcialmente CSS3 <