Como adicionar HTML e CSS em PDF: Guia PHP com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: Por que HTML+CSS em PDF é uma dor de cabeça (e como resolvê-la)



Imagine: você está desenvolvendo um site em PHP, e o cliente pede: "Faça com que o botão 'Baixar PDF' exporte faturas, relatórios ou certificados bonitos". Você pensa: "Fácil! Vou pegar um template HTML, adicionar estilos CSS e converter para PDF". Mas a realidade é mais complicada: fontes flutuam, tabelas quebram, e a propriedade CSS flexbox funciona de forma inconsistente.



No Stack Overflow, a pergunta "How can I add HTML and CSS into PDF" acumulou milhares de visualizações. Isso significa que o problema é familiar para quase todo desenvolvedor PHP. Neste artigo, vamos analisar três bibliotecas populares — Dompdf, TCPDF e mPDF — e mostrar como converter corretamente HTML com CSS em PDF no PHP.



Você aprenderá:

  • Qual biblioteca escolher para diferentes tarefas
  • Como incluir estilos CSS (externos, embutidos, @import)
  • Como resolver problemas comuns: cirílico, tabelas, imagens
  • Como escrever código funcional para gerar PDF a partir de HTML


Por que não posso simplesmente salvar HTML como PDF?



Os navegadores renderizam HTML+CSS perfeitamente, mas os geradores de PDF não são navegadores. Eles usam seus próprios motores de renderização, que não suportam todas as propriedades CSS. Por exemplo:

  • flexbox e grid — não funcionam em todos os lugares
  • border-radius — suportado parcialmente
  • @media print — pode ser ignorado
  • Fontes (especialmente cirílico) — exigem inclusão


A boa notícia: as bibliotecas PHP modernas estão em constante melhoria e, com a abordagem correta, você pode obter um PDF que se parece quase com o do navegador.



Visão geral das bibliotecas para converter HTML+CSS em PDF no PHP



Vamos analisar as três ferramentas mais populares. Cada uma tem seus pontos fortes.



1. Dompdf

Prós: leve, fácil de instalar via Composer, bom suporte a CSS 2.1 e parcialmente CSS3. Ideal para documentos simples — faturas, recibos.

Contras: suporte fraco para layouts complexos (flexbox, grid), problemas com grandes volumes de HTML.



2. TCPDF

Prós: estável, poderoso, suporta Unicode (cirílico), funciona sem bibliotecas externas. Ideal para PDFs complexos com gráficos, QR codes, tabelas de várias páginas.

Contras: sintaxe complexa, estilos CSS precisam ser incluídos manualmente, o código fica extenso.



3. mPDF

Prós: melhor suporte a CSS (incluindo @media, float, position), excelente trabalho com cirílico, suporte a estilos de arquivos externos. Considerado o "meio-termo ideal".

Contras: mais pesado que o Dompdf, pode ser lento em documentos grandes.



Recomendação: para um início rápido, use Dompdf. Para projetos sérios, use mPDF. TCPDF — se você precisar de máxima flexibilidade e estiver disposto a escrever mais código.



Exemplo prático: Geração de PDF a partir de HTML com Dompdf



Vamos escrever um código real. Instale o Dompdf via Composer:



composer require dompdf/dompdf


Agora, crie um script PHP que converte um template HTML em PDF:



<?phprequire_once 'vendor/autoload.php';

use Dompdf\\Dompdf;use Dompdf\\Options;

// Configurações$options = new Options();$options->set('defaultFont', 'DejaVu Sans'); // Suporte a cirílico$options->set('isRemoteEnabled', true); // Permite imagens externas

$dompdf = new Dompdf($options);

// Template HTML$html = '<!DOCTYPE html><html><head> <style> body { font-family: DejaVu Sans, sans-serif; } .invoice { width: 100%; max-width: 80

Blogs

Book Recommendations