IRONSOFTWAREHOME

Cómo comprimir PDFs en C# usando IronPDF

Curtis Chau
Curtis Chau
Updated: 29 de junio de 2026

IronPDF comprime PDFs en C# a través del método CompressAndSaveAs, que re-codifica imágenes incrustadas como JPEG y opcionalmente elimina el árbol de estructura del PDF para reducir el tamaño del archivo en una sola llamada. Los métodos CompressPdfToBytes y CompressPdfToStream complementarios hacen el mismo trabajo en memoria cuando no se desea tocar el disco.

Las imágenes generalmente representan la mayor parte del tamaño de un PDF, y los documentos con muchas tablas llevan un árbol de estructura que añade más peso. IronPDF apunta a ambos, por lo que la misma llamada funciona en PDFs cargados desde el disco o en un flujo de memoria.

Guía rápida: Comprimir archivos PDF con IronPDF

Cargue su PDF con PdfDocument.FromFile y llame a CompressAndSaveAs para re-codificar sus imágenes y escribir la copia reducida en un solo paso. El segundo argumento es la calidad del JPEG.

  1. 1Install IronPDF with NuGet Package Manager

    PM > Install-Package IronPdf

  2. 2Copie y ejecute este fragmento de código.

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

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

Por favor nota: Los métodos anteriores para compresión como CompressImages, CompressStructTree, y Compress(CompressionOptions) están obsoletos.

¿Cómo comprimo imágenes en PDFs?

Pase un valor de JPEG quality como segundo argumento a CompressAndSaveAs e IronPDF re-codificará cada imagen incrustada a esa calidad. Los valores varían de 0 (compresión máxima) a 100 (mínima pérdida), y el motor subyacente decide cómo cada valor se mapea al resultado. Este es el método al que acudir siempre que un documento lleve imágenes incrustadas.

Como guía general:

  • 90 y más: alta calidad
  • 80 a 90: calidad media
  • 70 a 80: baja calidad

Un número más bajo comprime más fuerte pero puede introducir artefactos visibles, y cuánto disminuya la claridad depende de la imagen de origen, por lo que pruebe algunos ajustes contra su propio contenido para encontrar el equilibrio que desee.

Entrada

using IronPdf;

ChromePdfRenderer renderer = new ChromePdfRenderer();

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

// Quality 40 re-encodes every embedded image as a low-quality JPEG, which is
// where most of the file-size saving comes from in image-heavy PDFs
pdf.CompressAndSaveAs("compressed.pdf", 40);
C#

Salida

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

Reducido en un 39.24% en una representación de Wikipedia.

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

¿Cómo comprimo la estructura del árbol PDF?

Pase removeStructureTree: true como tercer argumento a CompressAndSaveAs para eliminar la estructura del árbol que el motor de Chrome escribe en un PDF. El ahorro es mayor en PDFs del motor de Chrome que contienen extensos datos de tablas. Algunos motores de renderizado no emiten tal estructura, lo que deja nada para que la función elimine.

Eliminar el árbol puede debilitar la selección y el resaltado de texto, por lo que considere eso frente a la ganancia de tamaño si los lectores más tarde necesitarán extraer texto e imágenes del resultado.

Pruebe CompressAndSaveAs con la eliminación de la estructura del árbol usando este PDF con datos de tabla.

using IronPdf;

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

// Pass null quality to skip image compression and true to drop the structure
// tree, which is the bulk of the size in table-heavy Chrome-rendered PDFs
pdf.CompressAndSaveAs("compressedTable.pdf", null, true);
C#

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

Reduced by 67.90%. La cifra aumenta a medida que crece el PDF de la tabla.

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

Mi biblioteca favorita de este tipo es IronPDF. Permite una manipulación rápida y eficiente de archivos PDF. También tiene muchas funciones valiosas, como exportar al formato PDF/A y firmar documentos PDF digitalmente.

Milan Jovanovic

Microsoft MVP

Ver estudio de caso

IronOCR significa que podemos ahorrar $40,000 anualmente en el procesamiento manual, mientras mejoramos la productividad y liberamos recursos para tareas de alto impacto. Lo recomendaría encarecidamente.

Brent Matzelle

Director de Tecnología, OPYN

Ver estudio de caso

El Iron Suite juega un papel crucial en nuestras operaciones. Estas son herramientas que aumentan la eficiencia en toda la empresa, incluyendo la creación de planos y la mejora en la gestión de inventario.

David Jones

Ingeniero de Software Principal, Agorus Build

Ver estudio de caso

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

Proporcione un valor quality y configure removeStructureTree en true en la misma llamada CompressAndSaveAs para reducir ambas fuentes de exceso al mismo tiempo. Esta combinación vale la pena en documentos que mezclan imágenes con datos estructurados, como informes con gráficos o facturas con tablas incrustadas.

using IronPdf;

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

// Shrink both sources of bloat in one pass: re-encode images at quality 80
// and strip the structure tree (true) for the largest size reduction
pdf.CompressAndSaveAs("compressed.pdf", 80, true);
C#

¿Qué parámetros acepta CompressAndSaveAs?

  • outputPath (string): la ruta del archivo donde se escribe el PDF comprimido.

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

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

Deje que el caso de uso ajuste la configuración. Las copias de archivo a menudo prefieren la calidad sobre el tamaño, mientras que la distribución web recompensa el archivo más pequeño. El mismo compromiso se aplica cuando comprimes documentos compatibles con PDF/A, donde la fidelidad de la imagen puede ser la prioridad.

¿Cómo obtengo un control detallado sobre la compresión?

Para la mayoría de los documentos, la llamada de dos argumentos es suficiente, pero archivos con muchas imágenes y presupuestos de tamaño estrictos a veces necesitan más control. Pase un objeto AdvancedCompressionOptions a CompressAndSaveAs para ajustar la tubería de compresión, incluyendo la submuestreo DPI de imagen, la calidad de re-codificación JPEG, y el nivel de compresión zlib. La sobrecarga más simple CompressAndSaveAs(outputPath, quality, removeStructureTree) aún funciona sin cambios y produce el mismo resultado que antes.

using IronPdf;

var pdf = PdfDocument.FromFile("input.pdf");

// Web or email: strong size reduction
pdf.CompressAndSaveAs("compressed.pdf", new AdvancedCompressionOptions
{
    JpegQuality = 70,
    TargetImageDpi = 150,
    RemoveStructureTree = true
});

// Print quality: minimal quality loss
pdf.CompressAndSaveAs("print.pdf", new AdvancedCompressionOptions
{
    JpegQuality = 90,
    TargetImageDpi = 300
});
C#

Las dos propiedades que mueven más la aguja son JpegQuality y TargetImageDpi:

  • JpegQuality (int?, 1 a 100, valor por defecto null): recodifica imágenes a esta calidad JPEG. Déjelo null para omitir completamente la recodificación de imágenes.
  • TargetImageDpi (int?, valor por defecto 150): submuestrea imágenes cuya DPI efectiva supera este valor antes de recodificar. Configúrelo en null o 0 para desactivar el submuestreo y mantener la resolución original.

Valores recomendados de JpegQuality (solo aplica cuando está configurado):

ValorCaso de uso
null (por defecto)Sin re-codificación de imágenes
95Archivo, mínimas artefactos
85Alta calidad
70Equilibrado, bueno para uso general
50Web o email, archivos más pequeños con artefactos visibles

Valores recomendados de TargetImageDpi (perdidosos):

ValorCaso de uso
300Calidad de impresión, sin pérdida a la vista a distancia normal
200Nítido en pantallas de alta DPI y retina
150 (por defecto)Mejor equilibrio de tamaño y calidad para pantalla y correo electrónico
96Agresivo, texto suave pero aún legible
null o 0Desactivado, preserva la resolución original
Por favor nota: TargetImageDpi el submuestreo es con pérdida: una vez que una imagen es submuestreada, su resolución original no puede ser restaurada. Decida por adelantado si desea reducción de resolución o solo recodificación de calidad, y configure TargetImageDpi en consecuencia.

¿Cómo comprimo PDFs sin guardarlos en el disco?

Las respuestas del API, funciones en la nube y archivos adjuntos de correo electrónico rara vez necesitan un PDF comprimido en disco. CompressPdfToBytes devuelve el resultado como un arreglo de bytes, así que usted decide dónde van los bytes a continuación.

using IronPdf;

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

// Return the compressed PDF as bytes so it can go straight into an HTTP
// response, a database varbinary column, or a queue message with no temp file
byte[] compressedBytes = pdf.CompressPdfToBytes();

File.WriteAllBytes("compressed.pdf", compressedBytes);
C#

Si necesita un Stream en lugar de un arreglo de bytes, llame a CompressPdfToStream y cópielo a su destino. Esto es adecuado para redirigir la salida al cuerpo de respuesta HTTP, una carga de almacenamiento en la nube, o cualquier flujo de trabajo basado en flujos.

using IronPdf;
using System.IO;

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

// Stream output so the compressed bytes can be piped straight to an HTTP
// response or cloud upload without first buffering the whole file as byte[]
using Stream compressedStream = pdf.CompressPdfToStream();

// CompressPdfToStream returns a read-only Stream, so copy it to the destination
using FileStream fileStream = File.Create("compressed.pdf");
compressedStream.CopyTo(fileStream);
C#

Qué opciones CompressionModo están disponibles?

Tanto CompressPdfToBytes como CompressPdfToStream aceptan un argumento opcional CompressionModo que decide cómo se hace el trabajo. Los objetivos de implementación difieren en si permiten acceso al disco, y el modo le permite escoger la compensación correcta:

ModoAcceso al discoRe-muestreo de imagenTamaño de salida
Automático (por defecto)Intenta disco, cae a la memoriaCuando el disco está disponibleEl más pequeño donde está permitido
FastMemoryNoneNoMás grande
AltaCalidadDirectorio temporal requeridoEl más pequeño

Automatic intenta HighQuality primero y cae a FastMemory cuando el directorio temporal está fuera de los límites. El ejemplo a continuación fuerza HighQuality para el menor tamaño de salida, lo que requiere acceso de escritura al directorio temporal del sistema en tiempo de ejecución.

using IronPdf;

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

// HighQuality resamples images using the system temp directory, so it produces
// the smallest output but needs write access to that directory at runtime
byte[] compressedBytes = pdf.CompressPdfToBytes(50, false, CompressionMode.HighQuality);

File.WriteAllBytes("compressed.pdf", compressedBytes);
C#

Salida

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

Conclusión

Ahora tiene un método, CompressAndSaveAs, que re-codifica imágenes y elimina el árbol de estructura, además de CompressPdfToBytes y CompressPdfToStream para el mismo trabajo en memoria bajo un CompressionModo elegido. Un paso natural siguiente es convertir esas páginas reducidas en miniaturas con rasterización de PDF.

Preguntas Frecuentes

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

Los resultados varían según el contenido. En los ejemplos mostrados, la compresión de imágenes redujo un archivo en 39.24% y la eliminación del árbol de estructuras redujo un PDF con muchas tablas en 67.90%. Los documentos con muchas imágenes y tablas ven los mayores ahorros.

¿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í, la compresión de IronPDF funciona con PDFs creados a través de varios métodos incluyendo conversiones de cadenas HTML a PDF, conversiones de URL a PDF, y conversiones de archivos HTML, así como 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.

¿Cómo obtengo un control detallado sobre la compresión de PDF en C#?

Pasa un objeto AdvancedCompressionOptions a CompressAndSaveAs para ajustar la línea de producción, incluyendo el muestreo de baja resolución de imágenes mediante TargetImageDpi, la calidad de re-codificación JPEG mediante JpegQuality, y el CompressionLevel de zlib. La sobrecarga original CompressAndSaveAs(outputPath, quality, removeStructureTree) todavía funciona y produce el mismo resultado que antes.

How can I achieve fine-grained control over PDF compression in IronPDF?

For fine-grained control, IronPDF allows you to pass an `AdvancedCompressionOptions` object to the `CompressAndSaveAs` method, letting you adjust JPEG quality, image DPI downsampling, and zlib compression levels.

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 estructurados y visualmente atractivos.

...
Leer más

¿Listo para empezar?

Nuget Downloads 20,809,720Versión:2026.9recién publicada

Obtén tu GRATIS

Clave de prueba de 30 días instantáneamente.

bullet_checkedNo se requiere tarjeta de crédito ni creación de cuenta
bullet_testPrueba en producción
sin marcas de agua
bullet_calendarProducto completamente
funcional por 30 días
bullet_supportSoporte técnico 24/5
durante la prueba
Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta
Biblioteca C# NuGet para PDF
Instalar con NuGet

Versión: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. En el Explorador de Soluciones, haga clic derecho en Referencias, Administrar Paquetes NuGet
  2. Seleccione Examinar y busque "IronPDF"
  3. Seleccione el paquete e instale
C# PDF DLL
Descargar DLL

Versión: 2026.9

o descargue el Instalador de Windows aquí.

  1. Descargue y descomprima IronPDF en una ubicación como ~/Libs dentro del directorio de su solución
  2. En el Explorador de Soluciones de Visual Studio, haga clic derecho en Referencias. Seleccione Examinar, "IronPDF.dll"

Licencias desde $999

Key in blue circle

Obtenga su clave de prueba gratuita de 30 días al instante.

Your trial license will be sent to your email address

Sin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.

bullet_checkedNo se requiere tarjeta de crédito ni creación de cuentaSin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Reserve su Demostración en Vivo gratuita
Booking Badge

Confiado por millones de ingenieros en todo el mundo

Logos de clientes de Iron Software
Obtén tu Consulta Sin Compromiso
Completa el formulario a continuación o envía un correo a sales@ironsoftware.com
Tus detalles siempre serán mantenidos confidenciales.
Confiado por millones de ingenieros en todo el mundo
Logos de clientes de Iron Software
Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta