How to Compress PDFs
PDF compression refers to the process of reducing the file size of a PDF (Portable Document Format) document. This compression is applied to make the PDF file more manageable for storage, sharing, and transmission, especially when dealing with large or image-rich documents.
Images typically occupy a significant portion of PDF file sizes because they are generally larger in size compared to text and other content. IronPdf offers PDF compression features that compresses the embedded images and reduces the tree structure that often accompanies table data in PDFs.
How to Compress PDFs
- Download the C# library for PDF compression
- Import an existing PDF or render a new PDF
- Use the
CompressImages
method to reduce image sizes in the PDF - Utilize the
CompressStructTree
method to minimize the PDF's tree structure - Export the compressed PDF document
Install with NuGet
Install-Package IronPdf
Download DLL
Manually install into your project
Install with NuGet
Install-Package IronPdf
Download DLL
Manually install into your project
Start using IronPDF in your project today with a free trial.
Check out IronPDF on Nuget for quick installation and deployment. With over 8 million downloads, it's transforming PDF with C#.
Install-Package IronPdf
Consider installing the IronPDF DLL directly. Download and manually install it for your project or GAC form: IronPdf.zip
Manually install into your project
Download DLLCompress Images Example
The way resizing JPEGs works, 100% quality has almost no loss, and 1% is a very low-quality output image.
- 90% and above: considered high-quality
- 80%-90%: considered medium-quality
- 70%-80%: considered low-quality
Feel free to explore various values to understand the trade-off between quality and file size. It's important to note that the quality reduction will vary based on the type of input image, and certain images may experience more noticeable clarity reduction than others.
: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")
Compress Images - Size Comparison
Reduced by 39.24%!!
Understanding Image Compression Options
Let's delve into the details of our image compression options:
ShrinkImage: This feature scales down the image resolution based on its visible size in the PDF document. By doing so, it significantly reduces the size and quality of the images, optimizing them for efficient storage and transmission.
HighQualitySubsampling: This setting determines the chroma subsampling method used for image compression. Selecting "True" utilizes 4:4:4 chroma subsampling, ensuring a higher quality image with full color detail. Conversely, choosing "False" employs 4:1:1 chroma subsampling, which sacrifices some color detail to further reduce the image size.
Chroma subsampling is a crucial technique in digital image compression, aimed at reducing the data required to represent an image while preserving its visual quality. It achieves this by selectively reducing the resolution of color information (chrominance) while maintaining the full resolution of brightness information (luminance).
In "4:4:4" chroma subsampling, each pixel retains its own color information, resulting in no loss of color detail. Conversely, in "4:1:1" chroma subsampling, the color information is subsampled at a lower resolution, reducing color detail but also reducing file size.
Compress Tree Structure Example
This feature is used to reduce the size of the PDF by minimizing the tree structure created by the Chrome Engine. It works well with PDFs generated by the Chrome Engine from HTML containing extensive table data. Some PDF rendering engines might output PDF without this tree structure making the feature not effective.
The downside of removing all this tree structure is that for some PDFs, highlighting text or extracting may not work as effectively.
Let's use the table.pdf file to test out the CompressStructTree
method.
: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")
Compress Tree Structure - Size Comparison
Reduced by 67.90%!! This percentage increases with larger table PDF.
Advanced Compression Methods
IronPdf also has a Compress
method that can be used to configure both image compression and tree structure compression, making compressing documents easier than ever.
: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")
Explore available options
- CompressImages: Controls whether existing images in the document are compressed using JPG encoding. It defaults to false.
- RemoveStructureTree: Removing the structure tree can significantly reduce the disk space used by the document. However, it may negatively impact text selection, particularly in complicated documents.
- JpegQuality: Specifies the JPEG quality (ranging from 1 to 100) to be used during image compression. It defaults to 42.
- HighQualityImageSubsampling: This property determines whether to use 444 chroma subsampling for higher image quality (true) or 411 chroma subsampling to further reduce image size (false).
- ShrinkImages: Scaling down the image resolution can drastically reduce the size and quality of the images in the document.