Um PDF que deveria ter 200 KB frequentemente acaba com 5 MB. PDFs superdimensionados tornam downloads lentos, lotam caixas de email e frustram usuários. Se sua aplicação gera PDFs em escala — faturas, relatórios, certificados ou catálogos — a otimização de tamanho impacta diretamente custos de armazenamento, largura de banda e experiência do usuário.
O Que Torna os PDFs Grandes?
O tamanho do arquivo PDF é determinado por três fatores principais:
- Imagens — De longe o maior contribuinte. Um único PNG não comprimido pode adicionar megabytes ao documento.
- Fontes — Incorporar famílias de fontes completas (cada glifo em cada peso) infla o arquivo desnecessariamente.
- Metadados e estrutura — Metadados excessivos, JavaScript incorporado, campos de formulário e camadas de anotação adicionam overhead.
Otimização de Imagens
Imagens geralmente representam 80-95% do tamanho do PDF. Aqui estão as estratégias principais:
Escolha o Formato Certo
- JPEG — Melhor para fotografias e imagens complexas. Use qualidade 70-85 para bom equilíbrio.
- PNG — Melhor para screenshots, diagramas e imagens com texto. Use PNG-8 quando possível.
- WebP — Renderizadores PDF baseados em Chromium podem processar imagens WebP, que são 25-35% menores que JPEG.
- SVG — Para ícones, logos e ilustrações, SVG produz a menor saída porque é baseado em vetores.
Redimensione Antes de Renderizar
const sharp = require('sharp');
async function optimizeImage(inputPath, maxWidth = 800) {
const metadata = await sharp(inputPath).metadata();
if (metadata.width <= maxWidth) {
return sharp(inputPath).jpeg({ quality: 80 }).toBuffer();
}
return sharp(inputPath)
.resize(maxWidth)
.jpeg({ quality: 80, progressive: true })
.toBuffer();
}
Use CSS para Elementos Decorativos
<!-- Em vez de uma imagem de gradiente -->
<div style="background: linear-gradient(135deg, #667eea, #764ba2); height: 100px;"></div>
<!-- Em vez de uma imagem de divisor -->
<hr style="border: none; border-top: 2px solid #e2e8f0; margin: 20px 0;">
Otimização de Fontes
Limite Variantes de Fonte
<!-- Ruim: carregando 9 pesos -->
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900" rel="stylesheet">
<!-- Bom: apenas os pesos que você realmente usa -->
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700" rel="stylesheet">
Use Fontes do Sistema Quando Possível
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
Otimização de CSS para Impressão
@media print {
nav, .sidebar, .no-print, button { display: none !important; }
* { box-shadow: none !important; text-shadow: none !important; }
.hero { background-image: none !important; }
}
Configurações de Qualidade do TongoRender
const response = await fetch('https://api.tongorender.io/v1/pdf', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': process.env.TONGORENDER_API_KEY,
},
body: JSON.stringify({
html: optimizedHtml,
format: 'A4',
printBackground: false, // Pular cores/imagens de fundo se não necessário
scale: 1, // Não aumentar escala (scale > 1 aumenta tamanho)
}),
});
Checklist Rápido de Referência
- Redimensione imagens para dimensões de exibição antes de renderizar
- Use JPEG (qualidade 75-85) para fotos, SVG para ícones
- Carregue apenas os pesos de fonte que realmente usa
- Considere fontes do sistema para documentos internos
- Use CSS em vez de imagens para gradientes, bordas e formas
- Adicione regras
@media printpara ocultar elementos apenas de tela - Defina
printBackground: falsequando fundos não são necessários - Meça tamanhos de arquivo e defina metas de orçamento
Com essas otimizações, a maioria dos documentos pode ser reduzida em 50-80% sem perda visível de qualidade. O TongoRender renderiza HTML otimizado eficientemente, então o esforço que você coloca na otimização do template se traduz diretamente em PDFs menores.
Gere PDFs otimizados com o TongoRender — 100 renderizações gratuitas por mês, sem necessidade de cartão de crédito.