Saltar al contenido
PDFLove

cómo funciona la compresión de un pdf

Cómo comprime de verdad un PDF

"Comprimir PDF" ejecuta varias operaciones sin relación entre sí detrás de un único botón. Una es sin pérdidas y normalmente ya está hecha. Otra es de donde sale todo el tamaño, y no es gratis.

01

Capa uno: compresión de flujos, sin pérdidas y ya activada

Todo flujo de un PDF — flujos de contenido, tipografías incrustadas, datos de imagen — puede llevar un filtro que dice cómo está codificado. El habitual es `FlateDecode`, que es deflate, el mismo algoritmo que ZIP. Las instrucciones de dibujo de texto son muy repetitivas, así que deflate se luce con ellas: una página de comandos de dibujo se comprime rutinariamente a la quinta parte.

Lo importante es que casi todos los programas que escriben PDF aplican esto en el momento de guardar. Cuando el archivo llega a tus manos, esta capa ya se ha ejecutado. Por eso comprimir un PDF en ZIP no te gana casi nada, y por eso comprimir un PDF de texto que ya era pequeño te devuelve un archivo del mismo tamaño. No quedaba nada que quitar.

El PDF 1.5 añadió dos refinamientos que todavía ayudan en archivos anteriores. Los flujos de objetos empaquetan muchos diccionarios pequeños dentro de un solo flujo comprimible en lugar de dejarlos sueltos como texto sin comprimir. Los flujos de referencias cruzadas hacen lo mismo con el índice. En un documento grande con decenas de miles de objetos, eso solo puede ser una reducción apreciable, y no cuesta absolutamente nada.

02

Capa dos: recodificar imágenes, que es donde vive el tamaño

Deflate no sirve de nada con fotografías. Un escaneo no tiene repetición exacta que explotar — cada píxel se diferencia un poco de su vecino —, así que la compresión sin pérdidas sobre datos de imagen no devuelve casi nada. Los datos de imagen se guardan en su lugar con `DCTDecode` (JPEG) o, para escaneos de dos niveles, con `CCITTFaxDecode` o `JBIG2Decode`.

Así que comprimir un PDF cargado de imágenes significa una sola cosa: descodificar cada imagen, cambiarla y volver a codificarla. Hay tres palancas, y las tres implican una renuncia real.

Remuestreo
Reducir las dimensiones en píxeles. Un escaneo a 300 PPP guarda cuatro veces más datos que uno a 150, y una pantalla no puede mostrar la diferencia. Es la mayor victoria individual en documentos escaneados.
Calidad de recodificación
Subir la cuantización JPEG. Pasar de calidad 95 a 80 suele reducir los datos a la mitad y cuesta verlo; bajar de 60 empieza a mostrar halos alrededor del texto.
Reducción de color
Convertir el color a escala de grises, o un escaneo en grises de texto limpio a dos niveles. La tipografía negra sobre papel blanco no lleva ningún color que merezca la pena conservar.
Lo que cuesta
Las tres son de un solo sentido. Los píxeles descartados se han ido, y comprimir el resultado otra vez recodifica datos ya degradados.

03

Capa tres: tirar cosas que no estabas mirando

Una parte sorprendente de un PDF suele ser sobrecarga que nadie quiere. Las tipografías son el caso clásico: una tipografía incrustada entera puede irse a varios cientos de kilobytes, y un documento que usa once caracteres de ella en un titular carga con la familia completa. Hacer un subconjunto reescribe la tipografía para que contenga solo los glifos realmente dibujados.

Luego está la duplicación. Un logotipo colocado en la cabecera de todas las páginas se incrusta con frecuencia una vez por página en lugar de guardarse una vez y referenciarse ochenta. Deduplicar objetos idénticos en un informe largo puede quitarle un tercio al archivo sin ningún cambio visual.

El resto es más pequeño pero suma: miniaturas de página cacheadas por el programa que escribió el archivo, bloques de metadatos XMP, objetos huérfanos que dejaron ediciones anteriores, JavaScript y el historial completo de ediciones que dejan atrás los guardados incrementales. Nada de eso se dibuja. Todo eso viaja.

04

Por qué el mismo ajuste da resultados tan dispares

Porque el resultado depende por completo de qué capa tenga algo que hacer. Pasa un compresor por un escaneo de 40 MB y recodificará 200 imágenes y te devolverá 4 MB. Pasa los mismos ajustes exactos por un informe de texto de 400 KB y no encontrará imágenes, ni tipografías sin subconjunto, ni objetos duplicados, y te devolverá 390 KB.

Ninguno de los dos resultados es la herramienta funcionando bien o mal. Es la misma operación encontrándose con dos archivos completamente distintos, y por eso la primera pregunta útil es siempre de qué está hecho el archivo y no cuánto apretarlo.

05

Pérdida por generación, y por qué dos veces no es el doble de bueno

La cuantización JPEG no es idempotente. Recodificar una imagen que ya fue cuantizada vuelve a cuantizar coeficientes que ya estaban redondeados, así que el error se acumula mientras el tamaño apenas se mueve. La segunda pasada suele quitar un pequeño porcentaje y añadir artefactos visibles alrededor de cada borde duro.

Si una pasada no ha llegado a tu objetivo, el movimiento productivo es cambiar algo estructural — remuestrear más, bajar a escala de grises, quitar páginas — y no volver a ejecutar la misma compresión.

Preguntas

Preguntas relacionadas

¿La compresión de PDF es con pérdidas o sin ellas?

Las dos cosas, dentro del mismo archivo. El texto, los gráficos vectoriales y las tipografías se comprimen sin pérdidas y salen idénticos. Las fotografías y los escaneos se recodifican y pierden detalle de verdad. Por eso comprimir un documento de texto es gratis y comprimir un escaneo es una renuncia.

¿Por qué comprimir mi PDF apenas cambió nada?

Porque la capa sin pérdidas ya se aplicó cuando se escribió el archivo, y no había imágenes sobre las que trabajara la capa con pérdidas. Un archivo que es casi todo texto ya está cerca de lo más pequeño que puede ser.

¿Comprimir un PDF baja la calidad de impresión?

Reduce la resolución de las imágenes, así que para un fotolibro destinado a imprenta sí, de forma visible. Para un documento escaneado que va a una pantalla o a una impresora de oficina, remuestrear de 300 PPP a 150 suele ser indistinguible. El texto dibujado como texto no se toca con ningún ajuste.

¿Por qué mi PDF unido pesa más que los dos archivos sumados?

Normalmente por las tipografías. Si los dos archivos incrustan subconjuntos de la misma familia con nombres internos distintos, el archivo unido carga con los dos subconjuntos, porque nada puede demostrar con seguridad que sean intercambiables. Pasarle después una compresión suele recuperarlo.