HTML e CSS em PDF com PHP: guia completo 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 você pode precisar transformar HTML em PDF?

\n

Imagine a situação: você criou uma linda fatura no site, montou ela em HTML, adicionou estilos, e tudo ficou perfeito. Mas o cliente pede para enviar em PDF. Ou você precisa gerar um relatório com gráficos, tabelas e um layout complexo. Desenhar PDF manualmente é coisa do passado. É muito mais fácil escrever HTML+CSS e depois convertê-lo programaticamente em PDF.

\n

A pergunta "How Can I add HTML And CSS Into PDF" no Stack Overflow tem milhares de visualizações — isso mostra que o problema é relevante para muitos desenvolvedores. Neste artigo, vamos explorar as três formas mais populares de fazer isso com PHP, mostrar exemplos de código e ajudar você a escolher a melhor ferramenta para o seu projeto.

\n\n

Comparação de bibliotecas: Dompdf, TCPDF e mPDF

\n

Antes de escrever código, vamos entender o que escolher. No mercado PHP, existem três principais "pilares" para converter HTML em PDF:

\n
    \n
  • Dompdf — biblioteca leve, entende bem CSS 2.1 e parcialmente CSS 3. Ideal para documentos simples.
  • \n
  • TCPDF — poderosa e estável, mas exige mais código para layouts complexos. Não é muito amigável com CSS.
  • \n
  • mPDF — a melhor escolha se você precisa de suporte a CSS avançado (flexbox, gradientes, transparência). É a biblioteca mais "CSS-friendly".
  • \n
\n

Neste artigo, vamos focar no mPDF como a opção mais prática, mas também mostraremos exemplos com Dompdf para comparação.

\n\n

Instalação das bibliotecas via Composer

\n

Primeiro, vamos criar um projeto e instalar as dependências. Abra o terminal e execute:

\n
composer require mpdf/mpdf
\n

Se quiser testar o Dompdf:

\n
composer require dompdf/dompdf
\n

Agora, crie um arquivo gerar_pdf.php na raiz do projeto e comece a escrever o código.

\n\n

Exemplo 1: HTML simples para PDF com mPDF

\n

Vamos começar com o exemplo mais básico. Suponha que temos um template HTML de fatura:

\n
<!DOCTYPE html>\n<html>\n<head>\n    <style>\n        body { font-family: Arial, sans-serif; }\n        .invoice { max-width: 800px; margin: 0 auto; }\n        .header { background: #4CAF50; color: white; padding: 20px; }\n        .total { font-size: 24px; font-weight: bold; }\n    </style>\n</head>\n<body>\n    <div class="invoice">\n        <div class="header">Fatura nº 123 de 01/03/2025</div>\n        <p>Cliente: João Silva</p>\n        <table border="1" width="100%">\n            <tr><th>Serviço</th><th>Preço</th></tr>\n            <tr><td>Desenvolvimento de site</td><td>R$ 5.000,00</td></tr>\n            <tr><td>Otimização SEO</td><td>R$ 1.500,00</td></tr>\n        </table>\n        <div class="total">Total: R$ 6.500,00</div>\n    </div>\n</body>\n</html>
\n

Agora, o código PHP para gerar o PDF:

\n
<?php\nrequire_once __DIR__ . '/vendor/autoload.php';\n\n$html = file_get_contents('fatura.html'); // ou apenas uma string com HTML\n\n$mpdf = new \\Mpdf\\Mpdf();\n$mpdf->WriteHTML($html);\n$mpdf->Output('fatura.pdf', 'I'); // 'I' — abrir no navegador, 'D' — baixar\n?>
\n

Execute o script — e o PDF está pronto! Observe que o mPDF automaticamente capturou o CSS do <style>. Essa é a resposta para a pergunta "How Can I add HTML And CSS Into PDF" — basta passar o HTML com CSS para o método WriteHTML().

\n\n

Exemplo 2: Trabalhando com arquivos CSS externos

\n

Muitas vezes, os estilos ficam em arquivos separados. O mPDF suporta a inclusão de CSS externo via <link>:

\n
<?php\n$html = '\n<!DOCTYPE html>\n<html>\n<head>\n    <link rel="stylesheet" type="text/css" href="estilo.css">\n</head>\n<body>\n    <h1>Relatório do m                

Blogs

Book Recommendations