Saltar al contenido
Compress PDF
Español

Un motor de compresión que se ejecuta en tu pestaña.

Sin colas de workers, sin endpoints de subida, sin copia de "procesamiento en nuestros servidores". Esto es exactamente lo que le pasa a un PDF entre la caída y la descarga.

Pruébalo con tu PDF

Paso 1

Leer y entender el archivo

El archivo se lee con la API File.arrayBuffer() del navegador. No se publica nada; los bytes viven en la memoria de la pestaña.

PDF.js abre el documento y cuenta las páginas. Se muestrean unas pocas páginas repartidas por el archivo para medir la densidad de texto. Si una página muestreada contiene casi ningún carácter, el documento es probablemente un escaneo. Si tiene muchos, es basado en texto. Esa clasificación determina si se prueba primero la recomprimir imágenes o la rasterización.

El análisis también detecta la protección por contraseña. Los archivos cifrados se detienen aquí con un mensaje claro en lugar de producir una salida dañada.

Paso 2

Tres pasadas escalonadas

Cada pasada es una reconstrucción completa. El motor mide el resultado antes de decidir si la siguiente pasada, más destructiva, es necesaria.

Pasada uno — limpieza estructural

pdf-lib carga el documento y lo reescribe con los flujos de objetos activados. Se eliminan miniaturas de página, objetos huérfanos y metadatos identificativos. Las fuentes, imágenes y el contenido de la página no se tocan, así que esta pasada es efectivamente sin pérdida.

Sin pérdida

Pasada dos — recomprimir imágenes

El motor recorre el diccionario de recursos de cada página, incluidas las imágenes anidadas dentro de form XObjects, y encuentra los flujos de imagen JPEG. Cada uno se decodifica con createImageBitmap, se dibuja en un canvas a un tamaño reducido y se recodifica a menor calidad.

El nuevo flujo reemplaza al objeto antiguo en su lugar, así que el diseño de la página, el texto, los enlaces y el arte vectorial no cambian. Las imágenes con máscaras suaves, espacios de color CMYK, compresión JPX o JBIG2 se omiten en lugar de arriesgar un renderizado roto.

Texto conservado

Pasada tres — rasterización

Cuando el objetivo sigue fuera de alcance — o cuando el origen es un escaneo — PDF.js renderiza cada página a un canvas fuera de pantalla a 36–160 DPI. Los JPEGs se ensamblan en un documento nuevo con pdf-lib. Esto aplana el texto en píxeles, por eso se ejecuta al final y el panel de resultados lo dice.

Último recurso

Paso 3

Buscar el mejor resultado que encaje

La configuración de imágenes se recorre como una escalera ordenada por el peso de salida esperado: escala al cuadrado multiplicada por la calidad JPEG. El primer paso que mide por debajo de tu objetivo gana. Si el resultado está holgadamente por debajo del objetivo, el motor prueba un paso mejor para darte un archivo más nítido, y se queda con el que encaje.

La rasterización usa una escalera aparte de 160 DPI hacia abajo hasta 36 DPI. Reducir la resolución es la forma más rápida de encoger un escaneo, así que la escalera intercambia resolución y calidad JPEG juntas en lugar de llevar ninguna al extremo.

La regla de honestidad: el éxito significa outputBytes <= targetBytes, medido sobre el archivo terminado. Si nada encaja, la herramienta muestra el resultado real más pequeño y cuánto está por encima del objetivo. Nunca redondea hacia abajo, estima ni etiqueta un exceso como éxito.

Paso 4

Por qué la interfaz nunca se congela

Web Worker

El análisis de PDF y la codificación JPEG se ejecutan en un worker dedicado, así que desplazarse, seleccionar y escribir siguen respondiendo mientras se procesa un archivo grande.

OffscreenCanvas

El trabajo con imágenes ocurre en un canvas fuera de pantalla que no toca el DOM. Los navegadores sin soporte caen a una ruta fragmentada en el hilo principal.

Memoria acotada

Las páginas se procesan en lotes, los bitmaps se cierran tras su uso, las URLs de objeto se revocan y los archivos grandes se señalan antes de que puedan agotar la memoria del teléfono.

Lo que no puede hacer

Límites que preferimos admitir

  • Sin OCR. Las páginas escaneadas siguen escaneadas; la herramienta no puede hacer su texto buscable.
  • Sin descifrado de contraseñas. Los PDFs cifrados se detectan y se rechazan.
  • Sin preservación de firmas. Toda compresión invalida las firmas criptográficas.
  • Sin recodificación JBIG2 ni JPX. Esas imágenes se dejan intactas para evitar corrupción.
  • Sin reducción de tamaño garantizada. Un PDF de texto bien optimizado puede encogerse solo ligeramente.
  • Sin procesamiento en la nube. Si tu dispositivo se queda sin memoria, un servidor no ayudará.

Preguntas sobre el motor

Respuestas más profundas sobre cómo se comporta el compresor.

¿Por qué el compresor prueba varios ajustes en lugar de uno?

Porque la relación entre calidad de imagen y tamaño de archivo no es lineal, y cada PDF es diferente. El motor recorre una escalera de alta calidad a compresión agresiva, guarda un PDF real en cada paso, lo mide y se detiene en el primer resultado que encaja en tu objetivo. Ese resultado es el archivo de mejor apariencia que cumple el límite.

¿Por qué no rasterizar siempre? Produce los archivos más pequeños.

Rasterizar convierte el texto en píxeles. El archivo se encoge, pero el texto deja de ser seleccionable, los enlaces se rompen y la letra pequeña se difumina. Se ofrece como último recurso para escaneos, y el panel de resultados siempre te dice cuándo se usó.

¿La herramienta soporta PDFs protegidos con contraseña?

Aún no. PDF.js puede abrir un archivo cifrado con contraseña, pero la biblioteca que reconstruye documentos no puede recifrar el resultado. En lugar de producir un archivo roto, la herramienta detecta el cifrado y te pide que quites la contraseña en un lector de PDF primero.

¿Por qué un PDF solo de texto apenas se encogió?

El texto y los gráficos vectoriales ya son compactos. Si el 95% de un archivo es texto y fuentes, hay muy pocos datos redundantes que eliminar. Las herramientas que reportan ahorros enormes en tales archivos suelen rasterizar las páginas, que es por lo que esta herramienta reporta el método que usó.

¿Y las firmas digitales?

Toda modificación invalida una firma criptográfica. Ninguna herramienta de compresión puede preservarla. Conserva el original firmado y comprime una copia si necesitas enviar una versión más pequeña.

Míralo funcionar con tu propio archivo.

Suelta un PDF, elige un objetivo y observa el resultado medido.

Comprimir un PDF