Cómo comprimir PDF

por Chaknith Bin

La compresión de PDF es el proceso de reducir el tamaño de un archivo PDF. (Formato de documento portátil) documento. Esta compresión se aplica para que el archivo PDF sea más manejable a la hora de almacenarlo, compartirlo y transmitirlo, especialmente cuando se trata de documentos grandes o con muchas imágenes.

Las imágenes suelen ocupar una parte importante del tamaño de los archivos PDF porque, por lo general, son de mayor tamaño que el texto y otros contenidos. IronPdf ofrece funciones de compresión de PDF que comprimen las imágenes incrustadas y reducen la estructura de árbol que suele acompañar a los datos de tablas en los PDF.


Biblioteca NuGet C# para PDF

Instalar con NuGet

Install-Package IronPdf
o
Java PDF JAR

Descargar DLL

Descargar DLL

Instalar manualmente en su proyecto

Ejemplo de compresión de imágenes

Tal y como funciona el redimensionamiento de JPEG, la calidad del 100% casi no tiene pérdida, y el 1% es una imagen de salida de muy baja calidad.

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

    Siéntase libre de explorar varios valores para entender la compensación entre calidad y tamaño de archivo. Es importante tener en cuenta que la reducción de calidad variará en función del tipo de imagen de entrada, y que algunas imágenes pueden experimentar una reducción de claridad más notable que otras.

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

ChromePdfRenderer renderer = new ChromePdfRenderer();

PdfDocument pdf = renderer.RenderUrlAsPdf("https://es.wikipedia.org/wiki/Página_principal");

//  Comprimir imágenes en el PDF
pdf.CompressImages(40);

pdf.SaveAs("compressed.pdf");
Imports IronPdf

Private renderer As New ChromePdfRenderer()

Private pdf As PdfDocument = renderer.RenderUrlAsPdf("https://es.wikipedia.org/wiki/Página_principal")

'  Comprimir imágenes en el PDF
pdf.CompressImages(40)

pdf.SaveAs("compressed.pdf")
VB   C#

Comprimir imágenes - Comparación de tamaños

39,24% de reducción de tamaño!

Comprimir imágenes: comparación de tamaños

Opciones de compresión de imágenes

Profundicemos en los detalles de nuestras opciones de compresión de imágenes:

ReducirImagen: Esta función reduce la resolución de la imagen en función de su tamaño visible en el documento PDF. Al hacerlo, reduce significativamente el tamaño y la calidad de las imágenes, optimizándolas para un almacenamiento y una transmisión eficaces.

Submuestreo de alta calidad: Este ajuste determina el método de submuestreo de croma utilizado para la compresión de imágenes. Al seleccionar "Verdadero" se utiliza el submuestreo de croma 4:4:4, lo que garantiza una imagen de mayor calidad con todos los detalles de color. Por el contrario, si se elige "Falso" se emplea el submuestreo de croma 4:1:1, que sacrifica algunos detalles de color para reducir aún más el tamaño de la imagen.

El submuestreo cromático es una técnica crucial en la compresión digital de imágenes, cuyo objetivo es reducir los datos necesarios para representar una imagen preservando su calidad visual. Lo consigue reduciendo selectivamente la resolución de la información de color (crominancia) manteniendo toda la resolución de la información de brillo (luminancia).

En el submuestreo de croma "4:4:4", cada píxel conserva su propia información de color, por lo que no se pierden detalles de color. Por el contrario, en el submuestreo de croma "4:1:1", la información de color se submuestrea a una resolución inferior, lo que reduce el detalle del color pero también el tamaño del archivo.


Ejemplo de estructura de árbol comprimida

Esta función se utiliza para reducir el tamaño del PDF minimizando la estructura de árbol creada por Chrome Engine. Funciona bien con PDF generados por Chrome Engine a partir de HTML que contengan datos de tablas extensas. Algunos motores de renderizado de PDF pueden generar PDF sin esta estructura de árbol, lo que hace que la función no sea eficaz.

La desventaja de eliminar toda esta estructura de árbol es que para algunos PDF, resaltar texto o extraer puede no funcionar tan eficazmente.

Utilicemos el tabla.pdf para probar el método CompressStructTree.

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

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

//  Comprimir la estructura de árbol en PDF
pdf.CompressStructTree();

pdf.SaveAs("compressedTable.pdf");
Imports IronPdf

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

'  Comprimir la estructura de árbol en PDF
pdf.CompressStructTree()

pdf.SaveAs("compressedTable.pdf")
VB   C#

Comprimir estructura de árbol - Comparación de tamaños

**Reducción del tamaño en un 67,90! Este porcentaje aumenta con PDF de mesa más grandes.

Comprimir estructura de árbol - comparación de tamaños

Métodos avanzados de compresión

IronPdf también tiene un método Compress que puede utilizarse para configurar tanto la compresión de imágenes como la compresión de estructuras de árbol, haciendo que comprimir documentos sea más fácil que nunca.

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

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

CompressionOptions compressionOptions = new CompressionOptions();

//  Configurar la compresión de imágenes
compressionOptions.CompressImages = true;
compressionOptions.JpegQuality = 80;
compressionOptions.HighQualityImageSubsampling = true;
compressionOptions.ShrinkImages = true;

//  Configurar la compresión de la estructura de árbol
compressionOptions.RemoveStructureTree = true;

pdf.Compress(compressionOptions);

pdf.SaveAs("compressed.pdf");
Imports IronPdf

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

Private compressionOptions As New CompressionOptions()

'  Configurar la compresión de imágenes
compressionOptions.CompressImages = True
compressionOptions.JpegQuality = 80
compressionOptions.HighQualityImageSubsampling = True
compressionOptions.ShrinkImages = True

'  Configurar la compresión de la estructura de árbol
compressionOptions.RemoveStructureTree = True

pdf.Compress(compressionOptions)

pdf.SaveAs("compressed.pdf")
VB   C#

Explore las opciones disponibles

  • ComprimirImágenes: Controla si las imágenes existentes en el documento se comprimen utilizando la codificación JPG. Por defecto es falso.
  • Eliminar árbol de estructura: Eliminar el árbol de estructura puede reducir significativamente el espacio en disco utilizado por el documento. Sin embargo, puede afectar negativamente a la selección de texto, sobre todo en documentos complicados.
  • CalidadJpeg: Especifica la calidad JPEG (de 1 a 100) que se utilizará durante la compresión de la imagen. Por defecto es 42.
  • Submuestreo de imágenes de alta calidad: Esta propiedad determina si se utiliza el submuestreo de croma 444 para obtener una mayor calidad de imagen (verdadero) o 411 submuestreo de croma para reducir aún más el tamaño de la imagen (falso).
  • ReducirImágenes: Reducir la resolución de la imagen puede reducir drásticamente el tamaño y la calidad de las imágenes del documento.

Chaknith Bin

Ingeniero de software

Chaknith es el Sherlock Holmes de los desarrolladores. La primera vez que se le ocurrió que podría tener futuro en la ingeniería de software fue cuando hacía retos de código por diversión. Su trabajo se centra en IronXL e IronBarcode, pero se enorgullece de ayudar a los clientes con todos los productos. Chaknith aprovecha sus conocimientos, adquiridos hablando directamente con los clientes, para ayudar a mejorar los propios productos. Sus comentarios anecdóticos van más allá de los tickets de Jira y apoyan el desarrollo de productos, la documentación y el marketing, para mejorar la experiencia general del cliente.Cuando no está en la oficina, se le puede encontrar aprendiendo sobre aprendizaje automático, codificación y senderismo.