Un PDF que debería ser de 200 KB frecuentemente termina siendo de 5 MB. PDFs sobredimensionados hacen que las descargas sean lentas, llenan bandejas de entrada y frustran a los usuarios. Si tu aplicación genera PDFs a escala — facturas, reportes, certificados o catálogos — la optimización del tamaño impacta directamente en costos de almacenamiento, ancho de banda y experiencia del usuario.
¿Qué Hace Grandes a los PDFs?
- Imágenes — De lejos el mayor contribuyente. Un solo PNG sin comprimir puede agregar megabytes al documento.
- Fuentes — Incrustar familias de fuentes completas infla el archivo innecesariamente.
- Metadatos y estructura — Metadatos excesivos, JavaScript incrustado, campos de formulario y capas de anotación agregan overhead.
Optimización de Imágenes
Elige el Formato Correcto
- JPEG — Mejor para fotografías. Usa calidad 70-85 para buen balance.
- PNG — Mejor para capturas de pantalla y diagramas. Usa PNG-8 cuando sea posible.
- WebP — Los renderizadores basados en Chromium pueden procesar WebP, que es 25-35% más pequeño que JPEG.
- SVG — Para íconos, logos e ilustraciones, SVG produce la salida más pequeña.
Redimensiona 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();
}
Usa CSS para Elementos Decorativos
<!-- En lugar de una imagen de gradiente -->
<div style="background: linear-gradient(135deg, #667eea, #764ba2); height: 100px;"></div>
<!-- En lugar de una imagen de divisor -->
<hr style="border: none; border-top: 2px solid #e2e8f0; margin: 20px 0;">
Optimización de Fuentes
Limita las Variantes de Fuente
<!-- Malo: cargando 9 pesos -->
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900" rel="stylesheet">
<!-- Bueno: solo los pesos que realmente usas -->
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700" rel="stylesheet">
Usa Fuentes del Sistema Cuando Sea Posible
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
Optimización de CSS para Impresión
@media print {
nav, .sidebar, .no-print, button { display: none !important; }
* { box-shadow: none !important; text-shadow: none !important; }
.hero { background-image: none !important; }
}
Configuraciones de Calidad de 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, // Omitir colores/imágenes de fondo si no son necesarios
scale: 1, // No escalar (scale > 1 aumenta el tamaño)
}),
});
Checklist Rápido de Referencia
- Redimensiona imágenes a dimensiones de visualización antes de renderizar
- Usa JPEG (calidad 75-85) para fotos, SVG para íconos
- Carga solo los pesos de fuente que realmente usas
- Considera fuentes del sistema para documentos internos
- Usa CSS en lugar de imágenes para gradientes, bordes y formas
- Agrega reglas
@media printpara ocultar elementos solo de pantalla - Establece
printBackground: falsecuando los fondos no son necesarios - Mide los tamaños de archivo y establece presupuestos objetivo
Con estas optimizaciones, la mayoría de los documentos puede reducirse en un 50-80% sin pérdida visible de calidad.
Genera PDFs optimizados con TongoRender — 100 renderizaciones gratuitas al mes, sin necesidad de tarjeta de crédito.