Cómo comprimir archivos PDF usando Python | IronPDF

Cómo comprimir archivos PDF en Python

This article was translated from English: Does it need improvement?
Translated
View the article in English

El método CompressImages de IronPDF permite a los desarrolladores de Python reducir el tamaño de los archivos PDF comprimiendo las imágenes incrustadas con configuraciones de calidad ajustables, ayudando a optimizar el almacenamiento y acelerar el intercambio de documentos sin sacrificar la legibilidad.

Inicio rápido: Comprimir archivos PDF en Python

:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-compress-pdf/quickstart.py
from ironpdf import PdfDocument

# 1. Install IronPDF: pip install ironpdf
# 2. Load your PDF
pdf = PdfDocument("your-file.pdf")
# 3. Compress images (quality: 1-100)
pdf.CompressImages(60)
# 4. Save compressed PDF
pdf.SaveAs("compressed.pdf")
# 5. Adjust quality parameter to balance size vs quality
// ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
from ironpdf import PdfDocument

# 1. Install IronPDF: pip install ironpdf
# 2. Load your PDF
pdf = PdfDocument("your-file.pdf")
# 3. Compress images (quality: 1-100)
pdf.CompressImages(60)
# 4. Save compressed PDF
pdf.SaveAs("compressed.pdf")
# 5. Adjust quality parameter to balance size vs quality
PYTHON

Los archivos PDF son ampliamente utilizados para el almacenamiento y compartir de documentos, pero pueden volverse engorrosos en tamaños de archivo grandes. Subir o enviar por correo electrónico un informe de 10 MB es notablemente más lento que compartir un equivalente de 2 MB, y los costos de almacenamiento se acumulan cuando los volúmenes de documentos son altos. La compresión de PDF aborda esto al reducir el tamaño del archivo mientras mantiene el contenido legible.

Esta guía muestra cómo usar IronPDF para comprimir archivos PDF en Python. Los ejemplos de código práctico cubren tanto la compresión de imágenes estándar como la compresión avanzada basada en resolución, por lo que puede elegir el enfoque que se adapte a su pipeline. Ya sea trabajando con conversiones de HTML a PDF o documentos existentes, la misma API de compresión se aplica.

¿Qué es IronPDF y por qué utilizarlo para la compresión de PDF?

IronPDF es una biblioteca de PDF en Python que maneja la creación, lectura, edición y optimización de documentos PDF. Funciona con archivos generados desde cero, convertidos desde HTML o cargados desde el disco. Su API de compresión apunta a imágenes, que son el principal contribuyente a los grandes tamaños de PDF.

El método CompressImages acepta un entero de calidad de 1 a 100 y un booleano opcional que escala las imágenes a su resolución visible. Este diseño de parámetros dobles le permite ajustar la compresión con precisión: un panel de informes de alto tráfico podría usar calidad 70 para mantener las visuales nítidas, mientras que un sistema de archivo interno podría usar calidad 40 para maximizar el ahorro de almacenamiento. La biblioteca maneja toda la codificación internamente, por lo que no se requieren dependencias adicionales.

IronPDF es parte de Iron Suite, que cubre la creación de documentos, procesamiento de códigos de barras, OCR y archivado ZIP, todo desde una instalación compartida de Python. Para los desarrolladores que ya utilizan IronPDF para crear PDFs desde cero, la compresión se inserta como un paso natural antes de guardar o distribuir archivos.

¿Cómo se instala IronPDF en Python?

:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-compress-pdf/install.sh
:ProductInstall
// ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
:ProductInstall
SHELL

Por favor notaIronPDF for Python funciona sobre la biblioteca IronPDF .NET, que requiere el .NET 6.0 SDK. Descargue el .NET 6.0 SDK desde el sitio web oficial de Microsoft antes de ejecutar la instalación con pip.

Después de la instalación, configure su clave de licencia para ambientes de producción. IronPDF incluye una prueba gratuita de 30 días que cubre todas las características, incluida la compresión, sin necesidad de tarjeta de crédito. La página del paquete en PyPI enumera las notas de la última versión y detalles de dependencias.

¿Cómo se comprimen archivos PDF usando IronPDF?

Pasa un entero de calidad a CompressImages para reducir el tamaño de las imágenes incrustadas en todo el documento. Los enteros más bajos producen archivos más pequeños a costa de la fidelidad de la imagen; los enteros más altos preservan más detalles. El ejemplo a continuación muestra tanto una llamada de compresión estándar como una llamada avanzada que también reduce las imágenes a su tamaño visible.

:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-compress-pdf/compress-basic.py
from ironpdf import PdfDocument

# Load the PDF document from a file
pdf = PdfDocument("Image based PDF.pdf")

# Compress images to quality 60 (lower numbers increase compression)
pdf.CompressImages(60)
pdf.SaveAs("document_compressed.pdf")

# Advanced: also scale images down to their visible size in the PDF
# Note: scaling can affect image clarity if pages are resized later
pdf.CompressImages(90, True)
pdf.SaveAs("Compressed.pdf")
// ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
from ironpdf import PdfDocument

# Load the PDF document from a file
pdf = PdfDocument("Image based PDF.pdf")

# Compress images to quality 60 (lower numbers increase compression)
pdf.CompressImages(60)
pdf.SaveAs("document_compressed.pdf")

# Advanced: also scale images down to their visible size in the PDF
# Note: scaling can affect image clarity if pages are resized later
pdf.CompressImages(90, True)
pdf.SaveAs("Compressed.pdf")
PYTHON

¿Qué significan los parámetros de compresión?

CompressImages acepta dos parámetros:

  • Calidad (requerido): Un número entero del 1 al 100. Un valor de 100 retiene la calidad original de la imagen sin aplicar compresión. Los valores entre 40 y 80 cubren la mayoría de los casos de uso práctico, siendo 60 un punto de partida común para documentos de propósito general.
  • Escalar al tamaño visible (opcional): Un booleano que por defecto es False. Cuando True, cada imagen se re-muestrea para coincidir con sus dimensiones renderizadas en la página. Esto agrega un segundo paso de reducción además de la compresión de calidad, produciendo archivos más pequeños. Tenga en cuenta que las páginas escaladas o impresas a mayor DPI posteriormente pueden mostrar artefactos.

Después de guardar, compare el archivo comprimido con el original en cualquier visor de PDF para confirmar que la calidad cumple con sus requisitos. Para ejemplos adicionales de patrones, vea la página de ejemplos de compresión PDF.

¿Qué aspecto tiene el PDF antes de la compresión?

Archivo PDF abierto en el navegador Microsoft Edge mostrando un tamaño de archivo de 458 KB antes de aplicar la compresión de IronPDF for Python

¿Cómo se ve el PDF después de la compresión?

Archivo PDF comprimido en el explorador de Windows mostrando un tamaño de archivo de 357 KB, una reducción del 22% desde 458 KB usando IronPDF CompressImages con calidad 60

La comparación muestra una reducción de 458 KB a 357 KB (aproximadamente 22%) utilizando calidad 60. Los archivos con una mayor proporción de contenido fotográfico típicamente logran reducciones mayores que los archivos dominados por texto o gráficos vectoriales.

¿Cómo Aplicar Compresión por Lotes a Archivos PDF Múltiples?

Procesar una carpeta de archivos PDF sigue la misma API: itera sobre cada archivo .pdf, cárgalo con PdfDocument, llama a CompressImages, y guarda el resultado. La función a continuación envuelve ese patrón en una utilidad reutilizable.

:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-compress-pdf/batch-compress.py
import os
from ironpdf import PdfDocument

def batch_compress_pdfs(input_folder, output_folder, quality=60):
    """
    Compress all PDF files in a folder.

    Args:
        input_folder: Path to folder containing source PDFs
        output_folder: Path where compressed PDFs will be saved
        quality: Compression quality (1–100); default is 60
    """
    # Create the output folder if it does not exist
    os.makedirs(output_folder, exist_ok=True)

    for filename in os.listdir(input_folder):
        if filename.endswith(".pdf"):
            input_path = os.path.join(input_folder, filename)
            output_path = os.path.join(output_folder, f"compressed_{filename}")

            try:
                pdf = PdfDocument(input_path)
                pdf.CompressImages(quality)
                pdf.SaveAs(output_path)
                print(f"Compressed: {filename}")
            except Exception as e:
                print(f"Error compressing {filename}: {e}")
// ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
import os
from ironpdf import PdfDocument

def batch_compress_pdfs(input_folder, output_folder, quality=60):
    """
    Compress all PDF files in a folder.

    Args:
        input_folder: Path to folder containing source PDFs
        output_folder: Path where compressed PDFs will be saved
        quality: Compression quality (1–100); default is 60
    """
    # Create the output folder if it does not exist
    os.makedirs(output_folder, exist_ok=True)

    for filename in os.listdir(input_folder):
        if filename.endswith(".pdf"):
            input_path = os.path.join(input_folder, filename)
            output_path = os.path.join(output_folder, f"compressed_{filename}")

            try:
                pdf = PdfDocument(input_path)
                pdf.CompressImages(quality)
                pdf.SaveAs(output_path)
                print(f"Compressed: {filename}")
            except Exception as e:
                print(f"Error compressing {filename}: {e}")
PYTHON

El bloque except evita que un solo archivo corrupto o protegido con contraseña detenga todo el lote. Registrar el nombre del archivo junto con el mensaje de excepción facilita identificar qué archivos necesitan revisión manual. Para canales de mayor volumen, considere dividir la carpeta en partes y procesarlas en hilos paralelos.

ConsejosPara documentos que mezclan imágenes fotográficas con diagramas técnicos, ejecute dos pasadas: calidad 50 en fotografías y calidad 85 en páginas pesadas en diagramas. Extraer y volver a fusionar usando la API merge PDFs para mantener cada sección en su nivel de calidad óptimo.

¿Qué Configuraciones de Calidad Debería Usar para la Compresión de PDF?

La configuración de calidad adecuada depende de cómo se utilizará el PDF después de la compresión. Tres rangos cubren los escenarios más comunes.

Alta calidad (70–90): Los documentos destinados a la impresión o distribución formal se benefician de permanecer en este rango. El texto permanece nítido y los diagramas siguen siendo legibles a resoluciones de impresión estándar. La reducción del tamaño del archivo es modesta, típicamente del 10 al 25%, pero la salida es indistinguible de la fuente para la mayoría de los lectores.

Calidad media (50–70): Este rango se adapta a la entrega web y a los adjuntos de correo electrónico. El contenido fotográfico muestra un ligero suavizado en una inspección cercana, pero la reducción del tamaño del archivo (a menudo del 25 al 50%) mejora significativamente los tiempos de carga y la entrega de correos electrónicos. La mayoría de los sistemas de gestión de documentos y las cargas en portales funcionan bien a calidad 60.

Compresión agresiva (30–50): Archivos de archivo interno, copias de seguridad de almacenamiento a largo plazo y documentos que no se imprimirán pueden usar este rango. A calidad 40, las imágenes son notablemente más suaves, pero el texto renderizado por el motor PDF (en lugar de incrustado como imágenes) permanece completamente claro. Este enfoque también es adecuado para documentos que se convertirán a imágenes y se cambiarán de tamaño antes de mostrarse.

ImportanteSiempre mantenga accesible el archivo original sin comprimir. La compresión es con pérdida para imágenes; no hay manera de recuperar los datos de imagen originales de un PDF comprimido.

¿Cómo Verificar los Resultados de la Compresión en Python?

Comprobar el tamaño del archivo de salida programáticamente confirma que la compresión alcanzó tu objetivo antes de que el archivo pase al siguiente paso en una tubería. El os.path.getsize incorporado en Python devuelve el conteo de bytes para cualquier ruta de archivo, por lo que la verificación no requiere bibliotecas adicionales.

:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-compress-pdf/verify-compression.py
import os
from ironpdf import PdfDocument

# Load and compress the document
pdf = PdfDocument("report.pdf")
original_size = os.path.getsize("report.pdf")

pdf.CompressImages(60)
pdf.SaveAs("report_compressed.pdf")

compressed_size = os.path.getsize("report_compressed.pdf")
reduction_pct = (1 - compressed_size / original_size) * 100

# Report results to confirm compression was effective
print(f"Original:   {original_size / 1024:.1f} KB")
print(f"Compressed: {compressed_size / 1024:.1f} KB")
print(f"Reduction:  {reduction_pct:.1f}%")
// ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
import os
from ironpdf import PdfDocument

# Load and compress the document
pdf = PdfDocument("report.pdf")
original_size = os.path.getsize("report.pdf")

pdf.CompressImages(60)
pdf.SaveAs("report_compressed.pdf")

compressed_size = os.path.getsize("report_compressed.pdf")
reduction_pct = (1 - compressed_size / original_size) * 100

# Report results to confirm compression was effective
print(f"Original:   {original_size / 1024:.1f} KB")
print(f"Compressed: {compressed_size / 1024:.1f} KB")
print(f"Reduction:  {reduction_pct:.1f}%")
PYTHON

La salida da un claro porcentaje de reducción que se puede registrar o verificar contra un umbral. Si la reducción cae por debajo de las expectativas, el documento puede contener pocas o ninguna imagen incrustada. En ese caso, el tamaño del archivo permanecerá prácticamente sin cambios independientemente de la configuración de calidad, ya que CompressImages solo apunta a imágenes rasterizadas. El texto y los gráficos vectoriales no se ven afectados por este método.

Por favor notaLa compresión de IronPDF tiene como objetivo la codificación JPEG para imágenes rasterizadas dentro de PDFs. El estándar de compresión JPEG define el equilibrio entre calidad y tamaño que controla el parámetro de calidad. Los valores más bajos aplican una cuantización JPEG más agresiva, reduciendo tanto el tamaño del archivo como el detalle de la imagen.

¿Cuáles Son los Próximos Pasos para la Compresión de PDF en Python?

El método CompressImages de IronPDF ofrece a los desarrolladores de Python una API única y bien definida para reducir el tamaño de los archivos PDF. Ajuste el parámetro de calidad para equilibrar el ahorro de almacenamiento frente a la fidelidad visual, y agregue el booleano de escalado de resolución para un segundo paso de reducción cuando las dimensiones de salida estén fijas. Para una visión más amplia de lo que maneja IronPDF, consulte la página de visión general de la biblioteca de PDF for Python.

Comience su prueba gratuita para probar la compresión junto con el conjunto completo de funciones de IronPDF, incluyendo conversión de HTML a PDF, firmas digitales, manejo de formularios y fusión de documentos. Cuando termine el período de prueba, vea las opciones de licencia para encontrar el plan que se adapte a su implementación.

¿Listo para ver qué más puede hacer IronPDF? Explore el completo tutorial de PDF for Python para un recorrido por las capacidades principales de IronPDF.

Preguntas Frecuentes

¿Cómo instalo IronPDF para comprimir PDFs en Python?

Ejecuta pip install ironpdf en tu terminal. IronPDF for Python requiere que el SDK de .NET 6.0 esté instalado primero. Después de la instalación, importa PdfDocument del paquete ironpdf para empezar a comprimir PDFs.

¿Cuál es el código básico para comprimir un archivo PDF en Python?

Carga el archivo con PdfDocument("your-file.pdf"), llama a CompressImages(60) con un entero de calidad de 1 a 100, y guarda el resultado usando SaveAs("compressed.pdf"). Ajusta el valor de calidad para equilibrar el tamaño del archivo con la fidelidad de la imagen.

¿Cómo afecta el parámetro de calidad a la compresión de PDF?

El parámetro de calidad CompressImages varía de 1 a 100. Los valores más bajos producen archivos más pequeños con mayor suavizado de imágenes visible. Los valores más altos preservan más detalle a costa de un archivo más grande. Valores entre 40 y 80 cubren la mayoría de los casos prácticos, con 60 como punto de partida común.

¿Puedo pasar un segundo argumento a CompressImages?

Sí. Pasar True como segundo argumento le indica a IronPDF que re-muestree cada imagen a sus dimensiones visibles en la página antes de aplicar la compresión de calidad. Esto añade una segunda pasada de reducción y produce archivos más pequeños, pero las páginas escaladas o impresas a una mayor resolución (DPI) podrían mostrar artefactos.

¿La compresión de PDF afecta el texto y los gráficos vectoriales?

CompressImages se dirige a las imágenes rasterizadas incrustadas en el PDF. El texto renderizado por el motor PDF y los gráficos vectoriales no se ven afectados por este método, por lo que los documentos con poca o ninguna imagen incrustada mostrarán una reducción mínima de tamaño.

¿Cómo verifico la reducción de tamaño de archivo en Python?

Usa os.path.getsize("compressed.pdf") para obtener el conteo de bytes del archivo guardado y compáralo con el original. Dividir la diferencia por el tamaño original da el porcentaje de reducción como un número flotante.

¿Qué rango de calidad es mejor para la entrega en la web?

Un ajuste de calidad entre 50 y 70 es adecuado para la mayoría de los escenarios de entrega web y correo electrónico. Este rango suele reducir el tamaño del archivo entre un 25 y un 50 por ciento mientras mantiene el contenido fotográfico visualmente aceptable para la lectura en pantalla.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más
¿Listo para empezar?
Versión: 2026.5 just released
Still Scrolling Icon

¿Aún desplazándote?

¿Quieres una prueba rápida?
ejecutar una muestra Mira cómo tu HTML se convierte en PDF.