“Comprime mi PDF” tiene 100 respuestas en los resultados de búsqueda, y cada una solo tiene la mitad de razón. La verdad: la compresibilidad del PDF está fuertemente ligada a su “tipo de contenido”. Un PDF escaneado de 5 MB podría comprimirse a 800 KB; el mismo PDF de solo texto de 5 MB podría comprimirse solo a 4,7 MB.

Este artículo usa datos de compresión reales de 4 tipos típicos de PDF para explicar: de qué está hecho un archivo PDF, cuánto de cada parte es comprimible, y por qué un compresor local basado en navegador nunca puede igualar al GhostScript de escritorio.

Anatomía de un Archivo PDF

Un archivo PDF tiene 4 componentes:

  • Flujos de texto — texto dentro del PDF, almacenado como vectores (no como imágenes)
  • Flujos de imagen — imágenes dentro del PDF, usualmente comprimidas JPEG/PNG, posiblemente sin comprimir
  • Fuentes — archivos de fuentes incrustadas (a veces re-incrustadas, a veces con subconjuntos incrustados)
  • Metadatos — autor, software creador, historial de modificaciones

La compresión básicamente hace 4 cosas: re-comprimir imágenes (reducir flujos de imagen), reescribir diccionarios de fuentes (eliminar glifos no usados), Deflactar flujos de texto (tipo zip), eliminar metadatos redundantes.

La herramienta pdf-lib del lado del navegador hace principalmente #4 (limpieza de metadatos) y el caso simple de #1 (limpieza de metadatos de JPEGs ya comprimidos). Lo que no puede hacer: re-codificar imágenes escaneadas no optimizadas, forzar subconjuntos de fuentes, reestructurar profundamente el grafo de objetos PDF.

Ratios de Compresión Reales para 4 Tipos de PDF

Tipo 1: PDFs Escaneados

Características: Cada página es una imagen de alta resolución (usualmente 200-300 DPI, comprimida en JPEG). El 90% del volumen del archivo es el flujo de imagen.

Compresión esperada: 30-70%

Ejemplo: Contrato escaneado de 5 MB → 1,5-3,5 MB

Por qué el navegador no puede: Comprimir PDFs escaneados requiere re-codificar JPEGs (bajar calidad de 85 a 70, o convertir a WebP), lo cual necesita decodificar la imagen original. Las herramientas del navegador tienen capacidad limitada aquí, así que nuestra v1 no soporta este tipo de compresión. Las herramientas de escritorio (GhostScript, Adobe Acrobat, Foxit) lo hacen, al costo de instalar software.

Workaround manual: Exporta cada página a JPEG (usando un lector de PDF o pdf-lib), luego [comprime las imágenes](URL al compresor de imágenes) a calidad 70, luego ensambla los JPEGs en un nuevo PDF usando un PDF vacío como marco. Manual, lento, pero funciona.

Tipo 2: PDFs de Solo Texto

Características: Los flujos de texto dominan. Las fuentes tienen subconjuntos incrustados. Casi no hay imágenes.

Compresión esperada: 2-10%

Ejemplo: Informe de investigación de 1 MB (sin imágenes) → 0,9-0,98 MB

Por qué el navegador puede hacerlo: Limpieza de metadatos + flujos de texto Deflate. Eso es lo que hace useObjectStreams: true de pdf-lib.

Tipo 3: PDFs Mixtos (texto + imágenes)

Características: Piensa en manuales de productos, informes, presentaciones exportadas a PDF — hay gráficos, texto, imágenes de portada.

Compresión esperada: 10-30%

Ejemplo: Manual de producto de 8 MB → 5,6-7,2 MB

Por qué el navegador puede hacer parte de ello: La limpieza de metadatos + Deflate de flujos de texto funcionan completamente. La parte de imágenes — si las imágenes ya estaban comprimidas (JPEG calidad 80+) — el navegador no puede comprimir más. Si las imágenes dentro son PNG o JPEG de alta calidad, en teoría hay espacio.

Tipo 4: PDFs Encriptados

Compresión esperada: 0% (el contenido encriptado no se puede comprimir)

Por qué: Después del encriptado, el contenido es un flujo de bytes aleatorio. Cualquier algoritmo de compresión significativo se vuelve inútil sobre él. Debes desencriptar → comprimir → re-encriptar (si aún necesitas encriptación).

Por Qué las Herramientas Locales Nunca Superarán al GhostScript de Escritorio

GhostScript (gs) es la navaja suiza de la compresión de PDF. Sus capacidades principales:

  1. Reestructuración completa del grafo de objetos PDF — re-intercala contenido de páginas, fuentes, imágenes para mejor actualización incremental (no podemos hacer esto)
  2. Re-codificación de imágenes — re-codifica JPEG/PNG a calidad más agresiva (no podemos hacer esto)
  3. Subconjuntos de fuentes — incrusta solo los caracteres realmente usados en el documento (no podemos — necesita un motor de renderizado)
  4. Filtrado de flujos — cambia a un nivel de zlib más eficiente (hacemos deflate de línea base)

GhostScript es una instalación de 200 MB con toneladas de flags de línea de comandos (-dPDFSETTINGS=/screen para máxima compresión, /prepress para máxima calidad). Los navegadores no pueden hacer nada de esto — TypeScript se ejecuta en un sandbox sin un pipeline de renderizado de PDF de bajo nivel.

Cómo Comprime Nuestra v1

El botón “Comprimir” de nuestro modo Comprimir de Herramientas PDF hace 3 cosas:

  1. useObjectStreams: true — fusiona múltiples objetos PDF en un único flujo comprimido. Empíricamente ahorra 5-15% del volumen.
  2. Eliminar página por defecto — pdf-lib añade una página en blanco por defecto; nosotros no.
  3. Eliminar metadatos redundantes — como Producer, Creator, ModDate — si las herramientas posteriores no los necesitan, los eliminamos.

Si comprimes un PDF y no ves un cambio significativo (por ejemplo, 5 MB → 4,95 MB), la herramienta educadamente te dice “este PDF ya está bien comprimido”. Esa es retroalimentación honesta — no “lo comprimí, así que se redujo en un 30%”, sino “tu PDF no tiene nada más que reducir”.

Planes v2

Estamos evaluando:

  • La API experimental de re-codificación de imágenes de @pdf-lib/original (la comunidad tiene un PR, podría fusionarse en 2026 Q3)
  • Renderización con worker pdfjs-dist + canvas → WebP — renderizar cada página vía PDF.js, exportar a WebP, reempaquetar. Esta es la versión convertida en herramienta del workaround manual #1; costo significativo de bundle (+30 MB)

Antes de la v2, si necesitas compresión agresiva, no hay atajo — instala una herramienta de escritorio (GhostScript, PDFsam, NAPS2) o usa un servicio en línea de pago (smallpdf, ilovepdf).

Prácticas Recomendadas

  1. Verifica el tipo primero — abre el archivo en tu lector de PDF, juzga rápidamente (¿todo texto? ¿todas imágenes? ¿mixto?)
  2. No esperes milagros — los PDFs de solo texto no se comprimen. No comprimas en bucle (cada ciclo ahorra una cantidad mínima mientras tarda más)
  3. Lotes pequeños — comprime 10 o menos a la vez, espera el resultado, luego el siguiente lote
  4. Abre y verifica después de comprimir — re-abre el PDF comprimido y pasa las páginas. No existe un test visual “se ve bien”; solo existe el test visual “realmente pasando cada página”.

Prueba nuestro modo Comprimir de Herramientas PDF. Te dice honestamente cuánto ahorró.