Solução de problemas16 de março de 2026
Meidy Baffou·LazyPDF

HTML Convertido para PDF com Estilos Faltando — Diagnóstico e Correção

Você converteu uma página HTML para PDF e o resultado ficou sem as cores do CSS, com fontes incorretas, imagens ausentes ou layout completamente diferente do original? Esse é um dos problemas mais comuns na geração de PDFs a partir de HTML — e tem várias causas diferentes dependendo de como o HTML e o CSS foram estruturados. No contexto brasileiro, isso ocorre frequentemente ao gerar PDFs de recibos de pagamento, boletos personalizados, propostas comerciais em HTML, relatórios gerados por sistemas ERP e certificados de cursos e eventos. A aparência inconsistente dos PDFs prejudica a credibilidade profissional desses documentos. Este guia explica as causas mais comuns e como corrigir cada uma delas.

Por Que os Estilos CSS Não Aparecem no PDF

A conversão de HTML para PDF processa o HTML da mesma forma que um navegador, mas com algumas diferenças importantes: **CSS externo não carregado**: Se o HTML referencia um arquivo CSS com URL relativa ('../styles.css') ou URL absoluta de servidor ('https://exemplo.com/styles.css'), a ferramenta de conversão pode não ter acesso a esse arquivo — resultando em HTML sem estilo. **Fontes da web não disponíveis**: Google Fonts, Adobe Fonts e outras fontes carregadas de URLs externas podem não ser baixadas durante a conversão. O resultado é texto em fonte padrão do sistema. **Imagens com URL relativa**: Imagens referenciadas como './img/logo.png' não são encontradas pela ferramenta de conversão que não tem contexto de qual é o diretório base. **CSS com media queries para impressão**: Alguns CSS têm regras '@media print' que alteram o layout para impressão — a ferramenta de conversão usa o CSS de impressão, que pode ser diferente do CSS de tela. **JavaScript que gera estilos dinamicamente**: Componentes React, Vue, Angular e similares precisam ser renderizados antes de converter. HTML estático não tem os estilos injetados dinamicamente pelo JavaScript. **Propriedades CSS não suportadas**: A engine de renderização da ferramenta pode não suportar todas as propriedades CSS modernas (algumas variáveis CSS, certos seletores avançados, etc.).

Soluções para Estilos Faltando na Conversão HTML-para-PDF

Siga este processo de diagnóstico para identificar e resolver o problema.

  1. 1Inspecione o HTML de origem. Verifique como o CSS está incluído: está no arquivo HTML mesmo (inline ou tag <style>) ou em arquivo externo (<link>)? CSS externo precisa de tratamento especial para a conversão.
  2. 2Para CSS externo: abra o arquivo HTML em um editor de texto e copie o conteúdo do arquivo CSS para dentro do HTML usando a tag <style>. Isso elimina a dependência de arquivo externo e garante que os estilos estejam presentes na conversão.
  3. 3Para fontes da web: baixe os arquivos de fonte (.woff2, .ttf) e inclua-os diretamente no HTML usando @font-face com base64. Alternativamente, substitua por fontes seguras do sistema (Arial, Georgia, Times New Roman) que funcionam sem internet.
  4. 4Para imagens: converta as imagens para base64 e insira-as inline no HTML. Em vez de <img src='logo.png'>, use <img src='data:image/png;base64,iVBORw...'/>. Isso elimina a dependência de arquivos externos.
  5. 5Para conteúdo gerado por JavaScript: renderize a página no navegador (Chrome, Firefox), depois use 'Salvar como > Página web, completa' para obter o HTML com todos os estilos e scripts já executados. Use esse HTML salvo para converter.
  6. 6Após as correções, converta o HTML usando o LazyPDF e verifique o resultado. Se ainda faltar algum estilo específico, inspecione o CSS buscando propriedades que possam não ser suportadas e substitua por equivalentes mais simples.

Técnica de Inline CSS para Conversão Confiável

Para garantir que estilos sempre apareçam na conversão, use CSS inline nos elementos principais: **Exemplo de recibo com CSS inline confiável**: ```html <div style="font-family: Arial, sans-serif; margin: 20px; color: #333;"> <h1 style="color: #1a73e8; border-bottom: 2px solid #1a73e8; padding-bottom: 10px;"> Recibo de Pagamento </h1> <table style="width: 100%; border-collapse: collapse; margin-top: 20px;"> <tr style="background-color: #f5f5f5;"> <td style="padding: 8px; border: 1px solid #ddd;">Descrição</td> <td style="padding: 8px; border: 1px solid #ddd;">Valor</td> </tr> </table> </div> ``` **Vantagens do CSS inline**: - Não depende de arquivos externos - Funciona em qualquer ferramenta de conversão - Mais portátil entre diferentes sistemas **Desvantagens**: - HTML mais verboso e difícil de manter - Sem reutilização de estilos **Abordagem híbrida recomendada**: Mantenha o CSS em um arquivo separado para desenvolvimento, mas use uma ferramenta (como 'juice' npm package ou premailer) para fazer o 'inlining' automático dos estilos antes de converter para PDF. Isso combina a organização do desenvolvimento com a confiabilidade do inline.

CSS Específico para Impressão em PDF

Otimize o CSS do seu HTML especificamente para a conversão PDF: **Use @media print para ajustes de PDF**: ```css @media print { /* Remove navegação e elementos não necessários */ nav, header.site-header, .sidebar { display: none; } /* Garante que imagens não quebram entre páginas */ img { page-break-inside: avoid; } /* Define tamanho de página */ @page { size: A4; margin: 2cm; } /* Garante que tabelas mostram cabeçalho em cada página */ thead { display: table-header-group; } /* Evita quebra de página em meio a elementos */ h1, h2, h3 { page-break-after: avoid; } } ``` **Cores e fundos**: Por padrão, a maioria das ferramentas não imprime cores de fundo para economizar tinta. Para garantir fundos coloridos no PDF, use `print-color-adjust: exact;` ou `-webkit-print-color-adjust: exact;` no CSS. **Fontes para documentos financeiros**: Para recibos, notas e documentos fiscais, use sempre fontes seguras (Arial, Helvetica, Times New Roman, Georgia) — garantem aparência consistente em qualquer sistema. **Unidades para PDF**: Prefira unidades absolutas (mm, cm, pt) em vez de relativas (em, %) para tamanhos que precisam ser exatos no PDF — como margens de boletos bancários.

Perguntas frequentes

Por que a conversão de HTML para PDF funciona no Chrome mas não no LazyPDF?

O Chrome tem acesso a todos os recursos locais e à internet para carregar fontes e CSS externos. O LazyPDF converte via LibreOffice no servidor, que tem contexto diferente e pode não ter acesso a URLs externas. A solução é sempre usar CSS inline ou embutido na tag <style> e imagens em base64 para garantir conversões consistentes em qualquer ferramenta.

Tabelas do HTML ficam com bordas diferentes no PDF. Como resolver?

Use CSS explícito para bordas de tabela: `border-collapse: collapse` na tabela e `border: 1px solid #000` em cada célula. Evite usar propriedades `outline` ou `box-shadow` em tabelas — nem todas as engines de PDF suportam. Bordas simples com `border` são as mais compatíveis com conversão para PDF.

Como converter uma página web inteira (com cabeçalho, menus e rodapé) para PDF apenas com o conteúdo principal?

A abordagem mais eficiente é usar CSS de impressão para ocultar os elementos não desejados: `@media print { nav, header, footer, .menu { display: none; } }`. Adicione esse CSS ao HTML antes de converter. Alternativamente, selecione apenas a div de conteúdo, copie para um novo HTML com estilo básico e converta esse HTML simplificado.

Converta suas páginas HTML para PDF com fidelidade — grátis e direto no navegador.

Converter HTML para PDF

Artigos relacionados