Cómo comprimir PDFs en C#

Cómo comprimir archivos PDF en C# con IronPDF

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

IronPDF ofrece potentes funciones de compresión de PDF en C# que reducen el tamaño de los archivos mediante la compresión de imágenes incrustadas y la optimización de las estructuras de árbol de PDF, lo que hace que los documentos sean más manejables para su almacenamiento y uso compartido, al tiempo que se mantiene la calidad.

La compresión de PDF reduce el tamaño de los archivos PDF para hacerlos más manejables a la hora de almacenarlos, compartirlos y transmitirlos. Tanto si trabaja con ficheros PDF generados a partir de HTML como con ficheros PDF existentes, la compresión es esencial para optimizar el manejo de los documentos.

Las imágenes suelen consumir la mayor parte del tamaño de los archivos PDF. IronPDF ofrece funciones de compresión que reducen el tamaño de las imágenes incrustadas y optimizan la estructura de árbol que suele encontrarse en los PDF con muchas tablas. Estas técnicas funcionan a la perfección con archivos PDF creados mediante diversos métodos, como conversiones de URL a PDF y conversiones de archivos HTML.

Inicio rápido: Comprimir archivos PDF con IronPDF

Reduzca el tamaño de los archivos PDF con las herramientas de compresión de IronPDF. Cargue su PDF con PdfDocument.FromFile y llame a CompressAndSaveAs para comprimir y guardar su PDF optimizado en un solo paso. Este proceso garantiza una reducción significativa del tamaño del archivo sin perder calidad.

  1. Instala IronPDF con el Administrador de Paquetes NuGet

    PM > Install-Package IronPdf
  2. Copie y ejecute este fragmento de código.

    PdfDocument.FromFile("input.pdf").CompressAndSaveAs("compressed.pdf", 40);
  3. Despliegue para probar en su entorno real

    Comienza a usar IronPDF en tu proyecto hoy mismo con una prueba gratuita

    arrow pointer


Por favor notaLos métodos de compresión anteriores, como CompressImages, CompressStructTree y Compress(CompressionOptions), han quedado obsoletos.

¿Cómo comprimir imágenes en PDF?

La calidad de compresión JPEG admite valores de 0 (compresión máxima) a 100 (pérdida mínima), y el motor subyacente determina cómo se aplica el valor. Comprender estos niveles ayuda a la hora de trabajar con PDF que contengan imágenes incrustadas o cuando se necesite gestionar fuentes y gráficos.

  • 90% o más: alta calidad
  • 80%-90%: calidad media
  • 70%-80%: calidad baja

Experimente con varios valores para equilibrar la calidad y el tamaño del archivo. La reducción de calidad varía en función del tipo de imagen de entrada: algunas imágenes muestran una pérdida de claridad más notable que otras. Esto es especialmente importante cuando se trabaja con imágenes de Azure Blob Storage o se crean PDF con marcas de agua personalizadas.

:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-image.cs
using IronPdf;

ChromePdfRenderer renderer = new ChromePdfRenderer();

PdfDocument pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page");

// Compress images in the PDF
pdf.CompressAndSaveAs("compressed.pdf", 40);
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

Dim pdf As PdfDocument = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page")

' Compress images in the PDF
pdf.CompressAndSaveAs("compressed.pdf", 40)
$vbLabelText   $csharpLabel

¿Qué resultados puedo esperar de la compresión de imágenes?

¡Reducido en un 39,24%!

Comparación de archivos mostrando compressed.pdf (449 KB) vs nonCompress.pdf (739 KB) demostrando los resultados de la compresión de imágenes

¿Cómo funciona el parámetro de calidad?

El parámetro quality en CompressAndSaveAs controla la calidad de codificación JPEG aplicada a cada imagen incrustada. Pase un entero de 0 (compresión máxima, calidad mínima) a 100 (compresión mínima, calidad máxima), o null para omitir por completo la compresión de imágenes.

IronPDF recodifica y escala automáticamente las imágenes durante la compresión, por lo que no se requieren opciones adicionales. Los valores más bajos producen archivos más pequeños, pero pueden introducir artefactos visibles; pruebe diferentes opciones para encontrar el equilibrio adecuado para su contenido.


¿Cómo comprimir la estructura de árbol de un PDF?

Esta función reduce el tamaño del PDF eliminando la estructura de árbol creada por el motor de Chrome. Pase removeStructureTree: true como tercer parámetro de CompressAndSaveAs para habilitarla. Es más eficaz con archivos PDF generados por el motor de Chrome que contengan tablas con gran cantidad de datos. Algunos motores de renderizado producen PDF sin esta estructura, por lo que la función no es efectiva en esos casos. Esta técnica es útil cuando se trabaja con diseños complejos o mezclando varios PDF con elementos estructurales redundantes.

La eliminación de la estructura de árbol puede afectar al resaltado del texto y a la eficacia de la extracción. Hay que tener en cuenta este compromiso a la hora de aplicar la compresión, especialmente si los usuarios necesitan extraer texto e imágenes de los PDF comprimidos.

Test CompressAndSaveAs with tree structure removal using this PDF with table data.

:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-tree-structure.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("table.pdf");

// Compress tree structure in PDF
pdf.CompressAndSaveAs("compressedTable.pdf", null, true);
Imports IronPdf

Dim pdf As PdfDocument = PdfDocument.FromFile("table.pdf")

' Compress tree structure in PDF
pdf.CompressAndSaveAs("compressedTable.pdf", Nothing, True)
$vbLabelText   $csharpLabel

¿Qué reducción de tamaño de archivo puede lograr la compresión de estructura de árbol?

¡Reducido en un 67,90%! Este porcentaje aumenta con PDFs de tabla más grandes.

Comparación de archivos mostrando compressedTable.pdf (52 KB) vs table.pdf (162 KB) demostrando los resultados de la compresión

¿Cómo puedo aplicar ambos métodos de compresión juntos?

CompressAndSaveAs gestiona tanto la compresión de imágenes como la de estructuras de árbol en una sola llamada: pasa un valor quality y establece removeStructureTree en true. Este enfoque combinado es especialmente eficaz para PDF complejos que contienen imágenes y datos estructurados, como informes con tablas o documentos con tablas y gráficos incrustados.

:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-compress.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Configure compression with automatic optimization
pdf.CompressAndSaveAs("compressed.pdf", 80, true);
Imports IronPdf

Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Configure compression with automatic optimization
pdf.CompressAndSaveAs("compressed.pdf", 80, True)
$vbLabelText   $csharpLabel

¿Qué parámetros acepta CompressAndSaveAs?

  • outputPath (cadena): La ruta del archivo donde se guardará el PDF comprimido.

  • quality (int?, 0–100): Calidad JPEG aplicada a cada imagen incrustada. Los valores más bajos producen archivos más pequeños. Pase null para omitir por completo la compresión de imágenes.

  • removeStructureTree (bool, por defecto false): Cuando true, elimina el árbol de estructura del PDF para reducir aún más el tamaño del archivo. Más eficaz para archivos PDF generados en HTML con tablas.

Tenga en cuenta su caso de uso a la hora de aplicar la compresión. Los fines de archivo pueden dar prioridad a la calidad sobre el tamaño del archivo. La distribución web puede requerir archivos más pequeños. Ajuste la configuración en función de si trabaja con documentos compatibles con PDF/A o con PDF estándar.

¿Cómo puedo comprimir archivos PDF sin guardarlos en el disco?

En muchos escenarios reales, como respuestas de API, funciones en la nube o archivos adjuntos de correo electrónico, escribir un PDF comprimido en el disco es innecesario o poco práctico.

CompressPdfToBytes devuelve el PDF comprimido como una matriz de bytes, lo que le ofrece un control total sobre cómo se almacena o transmite el resultado. Tanto CompressPdfToBytes como CompressPdfToStream aceptan un parámetro opcional CompressionMode que controla cómo se realiza la compresión.

:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-to-bytes.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Compress and return as byte array
byte[] compressedBytes = pdf.CompressPdfToBytes();

File.WriteAllBytes("compressed.pdf", compressedBytes);
Imports IronPdf

Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Compress and return as byte array
Dim compressedBytes As Byte() = pdf.CompressPdfToBytes()

File.WriteAllBytes("compressed.pdf", compressedBytes)
$vbLabelText   $csharpLabel

¿Qué opciones de CompressionMode hay disponibles?

Los diferentes entornos de implementación tienen distintas restricciones en cuanto al acceso al disco y el rendimiento. La enumeración CompressionMode le permite elegir el equilibrio adecuado.

  • Automatic (predeterminado): Selecciona el método de compresión óptimo en función de las capacidades del sistema. Intenta primero HighQuality y recurre a FastMemory si el acceso al disco está restringido.

  • FastMemory: Realiza la compresión íntegramente en memoria sin E/S de disco. Es la opción más rápida, pero no aplica remuestreo ni submuestreo de imágenes, lo que da como resultado archivos de salida más grandes.

  • HighQuality: Aplica la máxima compresión mediante el acceso temporal al disco. Genera los archivos de salida más pequeños con una optimización completa de las imágenes. Requiere permisos de escritura en el directorio temporal del sistema.

Si necesita un Stream en lugar de una matriz de bytes, utilice CompressPdfToStream. Esto resulta útil al canalizar directamente a una respuesta HTTP, a una carga en almacenamiento en la nube o a cualquier flujo de trabajo basado en flujos.

:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-to-stream.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Compress and return as Stream
using var compressedStream = pdf.CompressPdfToStream();

File.WriteAllBytes("compressed.pdf", compressedStream.ToArray());
Imports IronPdf

Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Compress and return as Stream
Using compressedStream = pdf.CompressPdfToStream()
    File.WriteAllBytes("compressed.pdf", compressedStream.ToArray())
End Using
$vbLabelText   $csharpLabel

CompressPdfToBytes y CompressPdfToStream ya están disponibles en todas las plataformas de IronPDF, incluidas Java, Node.js y Python.

¿Listo para ver qué más puede hacer? Consulte nuestra página de tutoriales aquí: Características adicionales

Preguntas Frecuentes

¿Cuánto se puede reducir el tamaño de un archivo PDF con la compresión?

IronPDF puede reducir el tamaño de los archivos PDF hasta un 75% mediante la compresión de imágenes y la optimización de estructuras. En el ejemplo mostrado, un archivo se redujo en un 39,24% utilizando técnicas de compresión de imágenes.

¿Cómo comprime IronPDF los archivos PDF en C#?

IronPDF gestiona la compresión mediante un único método: CompressAndSaveAs. Reduce el tamaño de las imágenes incrustadas utilizando una calidad JPEG configurable (0-100) y, opcionalmente, puede eliminar el árbol de estructura interna del PDF estableciendo removeStructureTree: true, lo cual resulta especialmente eficaz para documentos con muchas tablas.

¿Qué niveles de calidad debo utilizar para la compresión JPEG en los PDF?

IronPDF admite una calidad de compresión JPEG del 1% al 100%. Los niveles recomendados son: 90% y más para alta calidad, 80%-90% para calidad media, y 70%-80% para baja calidad. El ajuste óptimo depende de su equilibrio entre el tamaño del archivo y los requisitos de calidad visual.

¿Puedo comprimir un PDF con una sola línea de código?

Sí, IronPDF permite comprimir archivos PDF con una sola línea de código: PdfDocument.FromFile("input.pdf").CompressAndSaveAs("compressed.pdf", 40); Esto carga un PDF, comprime las imágenes con una calidad del 40 % y guarda el resultado.

¿Funciona la compresión con PDF creados a partir de HTML?

Sí, las funciones de compresión de IronPDF funcionan a la perfección con PDF creados a través de varios métodos, como conversiones de cadenas HTML a PDF, conversiones de URL a PDF y conversiones de archivos HTML, así como con archivos PDF existentes.

¿Qué tipos de contenido se benefician más de la compresión de PDF?

Las imágenes suelen consumir la mayor parte del tamaño de los archivos PDF, por lo que los documentos con muchas imágenes son candidatos ideales para la compresión. Además, los PDF con estructuras de tablas complejas se benefician de la función de compresión de árbol de estructuras de IronPDF.

¿Puedo comprimir un PDF sin guardarlo en el disco?

Sí, IronPDF proporciona los métodos CompressPdfToBytes y CompressPdfToStream, que devuelven el PDF comprimido como una matriz de bytes o un Stream, respectivamente. Ambos aceptan un parámetro opcional CompressionMode con opciones de compresión Automática, FastMemory o Alta calidad.

¿Está disponible la compresión de PDF en otros lenguajes además de C#?

Sí, CompressPdfToBytes y CompressPdfToStream ya están disponibles en todas las plataformas de IronPDF, incluidas Java, Node.js y Python.

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
Revisado por
Jeff Fritz
Jeffrey T. Fritz
Gerente Principal de Programas - Equipo de la Comunidad .NET
Jeff también es Gerente Principal de Programas para los equipos de .NET y Visual Studio. Es el productor ejecutivo de la serie de conferencias virtuales .NET Conf y anfitrión de 'Fritz and Friends', una transmisión en vivo para desarrolladores que se emite dos veces a la semana donde habla sobre tecnología y escribe código junto con la audiencia. Jeff escribe talleres, presentaciones, y planifica contenido para los eventos de desarrolladores más importantes de Microsoft, incluyendo Microsoft Build, Microsoft Ignite, .NET Conf y la Cumbre de Microsoft MVP.
¿Listo para empezar?
Nuget Descargas 18,560,885 | Versión: 2026.4 recién lanzado
Still Scrolling Icon

¿Aún desplazándote?

¿Quieres una prueba rápida? PM > Install-Package IronPdf
ejecutar una muestra Mira cómo tu HTML se convierte en PDF.