Cómo comprimir PDF

Chaknith related to Cómo comprimir PDF
Chaknith Bin
26 de octubre, 2023
Actualizado 10 de diciembre, 2024
Compartir:
This article was translated from English: Does it need improvement?
Translated
View the article in English

La compresión de PDF se refiere al proceso de reducir el tamaño del archivo de un documento PDF (Formato de Documento Portátil). 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.

Comience con IronPDF

Comience a usar IronPDF en su proyecto hoy con una prueba gratuita.

Primer Paso:
green arrow pointer



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://en.wikipedia.org/wiki/Main_Page");

// Compress images in the PDF
pdf.CompressImages(40);

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

Private renderer As New ChromePdfRenderer()

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

' Compress images in the PDF
pdf.CompressImages(40)

pdf.SaveAs("compressed.pdf")
$vbLabelText   $csharpLabel

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

¡Reducido en 39.24%!

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:

ShrinkImage: 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.

HighQualitySubsampling: Esta configuración determina el método de subsampling 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. Logra esto reduciendo selectivamente la resolución de la información de color (crominancia) mientras mantiene la resolución completa 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.

Usemos el PDF con datos de tabla 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");

// Compress tree structure in PDF
pdf.CompressStructTree();

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

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

' Compress tree structure in PDF
pdf.CompressStructTree()

pdf.SaveAs("compressedTable.pdf")
$vbLabelText   $csharpLabel

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

¡Reducido en 67.90%!! Este porcentaje aumenta con los PDF de tablas 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 se puede utilizar para configurar tanto la compresión de imágenes como la compresión de la estructura 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();

// Configure image compression
compressionOptions.CompressImages = true;
compressionOptions.JpegQuality = 80;
compressionOptions.HighQualityImageSubsampling = true;
compressionOptions.ShrinkImages = true;

// Configure tree structure compression
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()

' Configure image compression
compressionOptions.CompressImages = True
compressionOptions.JpegQuality = 80
compressionOptions.HighQualityImageSubsampling = True
compressionOptions.ShrinkImages = True

' Configure tree structure compression
compressionOptions.RemoveStructureTree = True

pdf.Compress(compressionOptions)

pdf.SaveAs("compressed.pdf")
$vbLabelText   $csharpLabel

Explore las opciones disponibles

  • CompressImages: Controla si las imágenes existentes en el documento se comprimen utilizando codificación JPG. Por defecto es falso.
  • RemoveStructureTree: 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.
  • JpegQuality: Especifica la calidad JPEG (en un rango de 1 a 100) que se utilizará durante la compresión de la imagen. Por defecto es 42.
  • HighQualityImageSubsampling: Esta propiedad determina si se usa muestreo cromático 444 para una mayor calidad de imagen (true) o muestreo cromático 411 para reducir aún más el tamaño de la imagen (false).
  • ShrinkImages: Reducir la resolución de las imágenes puede disminuir drásticamente el tamaño y la calidad de las imágenes en el documento.
Chaknith related to Explore las opciones disponibles
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.