Como converter HTML para PDF
Criar PDFs a partir de HTML é útil para gerar faturas, relatórios, cartas, certificados e qualquer documento onde voce queira controlar o layout com CSS mas distribuir como PDF. Um conversor HTML-para-PDF baseado em navegador usa o motor de renderização do seu próprio navegador, então o resultado corresponde ao que voce ve na visualização ao vivo, sem uploads de servidor.
Como converter HTML em PDF
- Cole seu HTML: insira seu código HTML incluindo qualquer CSS inline ou tags
<style>no editor. O código pode incluir a estrutura completa da página com cabeçalhos, tabelas, imagens e estilo. - Visualize a saída: uma visualização ao vivo mostra exatamente como seu PDF ficará enquanto voce digita. Ajuste seu HTML e CSS até que a visualização corresponda ao que voce deseja.
- Gere e baixe: clique no botão gerar para criar o PDF no seu navegador, depois baixe-o instantaneamente.
O que voce pode criar
- Faturas e recibos: tabelas estruturadas com marca da empresa, itens de linha e totais
- Relatórios: documentos formatados com cabeçalhos, parágrafos, gráficos e tabelas de dados
- Certificados: layouts estilizados com fontes personalizadas, bordas e texto centralizado
- Cartas: correspondencia profissional com cabeçalho, corpo e áreas de assinatura
- Currículos: layouts projetados que se exportam como PDFs limpos para candidaturas a emprego
- Ingressos e passes de eventos: blocos estruturados de códigos QR com informações de participantes
- Etiquetas de envio: formatos padronizados para transportadoras postais
- Cartões de embarque e confirmações: versões para imprimir e levar de reservas online
- Convites: cartões estilizados com imagens, fontes e bordas decorativas
Uma breve história da conversão HTML-para-PDF
Na Web inicial (1995-2005), criar um PDF a partir de HTML exigia ferramentas do lado do servidor: Apache FOP (1999), PrinceXML (2002) ou wkhtmltopdf (2010), todas as quais rodavam em um servidor backend e exigiam o envio de conteúdo. A qualidade da saída variava enormemente porque cada motor de renderização implementava CSS de forma diferente.
A conversão do lado do navegador tornou-se prática em 2014 com bibliotecas como jsPDF e html2pdf.js, que usam HTML5 Canvas para rasterizar conteúdo. O resultado era decente para documentos simples mas falhava em layouts complexos e texto selecionável.
O avanço foi o modo headless do Chromium (2017), que expos o mesmo motor de renderização que o Chrome usa para páginas normais. Puppeteer (Node.js, 2017) tornou a geração de PDF Chromium do lado do servidor acessível para desenvolvedores. Conversores baseados em navegador agora usam a Print API (window.print()) com regras CSS @page, o mesmo caminho que o modo headless do Chromium usa, dando saída identica entre a visualização e o PDF.
Em 2026, HTML-para-PDF baseado em navegador é a escolha certa para a maioria dos documentos. A renderização do lado do servidor só faz sentido para documentos muito grandes (100+ páginas), processamento em lote automatizado, ou quando voce precisa mesclar PDFs de várias fontes.
Dicas de estilo para saída PDF
Use estilos inline ou tags <style>: folhas de estilo externas não são carregadas. Coloque todo o seu CSS seja inline em elementos ou em um bloco <style> no HTML.
Defina margens de página: use CSS @page { margin: 20mm; } para controlar o espaço em branco ao redor do seu conteúdo no PDF.
Use unidades amigáveis à impressão: mm, cm e pt são mais previsíveis em PDFs do que px ou rem. Use mm para margens e espaçamento que precisam corresponder às dimensões do mundo real.
Evite layouts dependentes da viewport: larguras percentuais e larguras de pixel fixas funcionam melhor. Unidades de viewport (vw, vh) podem não se comportar como esperado na saída PDF.
Controle as quebras de página: use page-break-before, page-break-after e page-break-inside (ou os mais novos break-before, break-after, break-inside) para controlar onde novas páginas começam. break-inside: avoid impede um único bloco de se dividir entre páginas.
Use @media print para regras apenas-PDF: qualquer CSS dentro de @media print { ... } aplica-se apenas ao gerar o PDF, não na visualização. Útil para esconder elementos apenas de tela como barras de navegação.
Exemplo de modo impressão CSS
@page {
size: A4;
margin: 20mm 15mm;
}
@media print {
.no-print { display: none; }
h1 { page-break-before: always; }
table { page-break-inside: avoid; }
a { color: black; text-decoration: none; }
}
body {
font-family: 'Helvetica', sans-serif;
font-size: 11pt;
line-height: 1.4;
color: #1a1a1a;
}
Tamanhos de página
Valores comuns de @page size:
A4(210 × 297 mm) - padrão global fora dos EUAletter(8.5 × 11 in) - padrão dos EUAlegal(8.5 × 14 in) - documentos legais dos EUAA3(297 × 420 mm) - posters, plantasA5(148 × 210 mm) - livretos, panfletos- Personalizado:
size: 100mm 150mmpara quaisquer dimensões
Adicione landscape para orientação paisagem: size: A4 landscape.
Armadilhas comuns
- Fontes externas não carregam: fontes web hospedadas em CDNs externos podem não ser incorporadas. Use
@font-facecom um arquivo de fonte codificado em base64 dentro da tag<style>, ou atenha-se a fontes do sistema (Helvetica, Times, Arial, Courier). - Imagens carregam lentamente ou não carregam: imagens externas podem não estar prontas quando o PDF é gerado. Use URIs de dados base64 para inclusão garantida:
<img src="data:image/png;base64,iVBORw0KGgoAAAA...">. - Cores de fundo removidas na impressão: navegadores removem cores e imagens de fundo por padrão para impressão para economizar tinta. Adicione
-webkit-print-color-adjust: exact; print-color-adjust: exact;ao seu body ou elementos específicos. - Layouts CSS Grid quebrando: motores PDF mais antigos não suportam totalmente CSS Grid. Teste com a visualização ao vivo; volte para
tableou Flexbox se Grid produzir resultados inesperados. - Quebras de página no meio de uma linha de tabela: use
tr { page-break-inside: avoid; }para manter as linhas juntas, outhead { display: table-header-group; }para repetir o cabeçalho da tabela em cada página. - Tamanhos de pixel não correspondem às dimensões físicas: 1 CSS px = 1/96 polegada ao imprimir. Então uma caixa
width: 96pxtem exatamente 1 polegada de largura no PDF. Usemmouptpara dimensionamento físico inequívoco. - Hyperlinks perdem cor: PDFs renderizam tags
<a>com sua cor definida por CSS. Se voce quer texto preto mas hyperlinks funcionais, usecolor: blacke deixe o sublinhado visual do leitor PDF indicar o link.
Alternativas a considerar
- Imprimir em PDF diretamente do navegador (Ctrl/Cmd+P, depois "Salvar como PDF"): zero configuração, funciona para qualquer página web que voce possa abrir. Melhor para conversões pontuais.
- Renderização do lado do servidor (Puppeteer, Playwright, PrinceXML): para geração em lote, automação ou documentos muito grandes. Requer configuração de desenvolvimento.
- Markdown para PDF: se voce escreve em Markdown, ferramentas dedicadas (Pandoc, Marp, Typora) lidam com a conversão em um passo sem andaime HTML.
- Templates de documentos (DocRaptor, Tectonic, LaTeX): para documentos altamente tipografados (artigos academicos, livros) onde voce precisa de controle preciso sobre kerning, ligaduras, matemática.
Para documentos comerciais diários (faturas, relatórios, certificados), um conversor HTML-para-PDF de navegador é mais rápido e igualmente refinado.
Dicas
- Visualize primeiro: sempre verifique a visualização ao vivo antes de gerar. É muito mais rápido iterar em HTML do que gerar um novo PDF toda vez.
- Use base64 para imagens: converta imagens em URIs de dados base64 para inclusão garantida no PDF. URLs externas podem falhar devido a restrições CORS.
- Mantenha simples: layouts CSS complexos (grids aninhados, elementos posicionados sobrepostos) podem não renderizar perfeitamente. Layouts mais simples produzem PDFs mais confiáveis.
- Teste quebras de página: para documentos de várias páginas, use
page-break-before: alwayspara controlar onde novas páginas começam. - CSS em modo impressão: envolva seus estilos finais em
@media print { ... }para fazer com que se apliquem apenas ao PDF gerado, não à visualização. Útil para esconder elementos de UI de tela. - Use HTML semantico:
<h1>,<h2>,<p>,<table>produzem PDFs acessíveis mais limpos do que<div>em todo lugar. Leitores de tela os analisam corretamente quando o usuário abre o PDF.
Privacidade e documentos confidenciais
O conversor HTML-para-PDF roda inteiramente no seu navegador. O HTML que voce cola, as imagens que voce incorpora e o PDF gerado todos permanecem no seu dispositivo. Nada é enviado para um servidor, registrado ou compartilhado com ninguém.
Isso importa porque entradas HTML-para-PDF são frequentemente sensíveis: dados de fatura com nomes de clientes, rascunhos de contratos com termos de preço, relatórios internos com cifras financeiras, certificados com informações pessoais. Serviços HTML-para-PDF em nuvem por design enviam seu HTML para o servidor deles, geram o PDF lá, e enviam de volta. Alguns retem entradas para "melhoria" ou análise. Para documentos contendo informações confidenciais, um conversor baseado em navegador é a escolha mais segura.
A conversão baseada em navegador também funciona offline uma vez que a página é carregada, e é rápida o suficiente para feedback instantaneo enquanto voce itera no HTML.
Perguntas frequentes
O PDF preserva minha estilização CSS?
Sim. O conversor renderiza seu HTML com a estilização CSS aplicada, incluindo cores, fontes, margens e layout. O PDF fica parecido com a página web renderizada, não com o código-fonte bruto.
Posso incluir imagens no PDF?
Sim. Use imagens codificadas em base64 (URIs de dados) para resultados mais confiáveis. URLs de imagens externas podem funcionar se forem acessíveis e estiverem com CORS habilitado.
Meu HTML é enviado a um servidor?
Não. A conversão acontece inteiramente no seu navegador. Seu código e o PDF gerado nunca saem do seu dispositivo.
Quais recursos CSS são suportados?
O CSS padrão, incluindo layouts, cores, fontes, fundos, bordas e tabelas, é bem suportado. Recursos avançados como CSS Grid, animações complexas e alguns casos extremos de Flexbox podem ter suporte limitado.