How to Compress PDFs

by Chaknith Bin

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.


C# NuGet Library for PDF

Install with NuGet

Install-Package IronPdf
or
Java PDF JAR

Download DLL

Download DLL

Manually install into your project

C# NuGet Library for PDF

Install with NuGet

Install-Package IronPdf
or
Java PDF JAR

Download DLL

Download DLL

Manually install into your project

Start using IronPDF in your project today with a free trial.

First Step:
green arrow pointer

Check out IronPDF on Nuget for quick installation and deployment. With over 8 million downloads, it's transforming PDF with C#.

C# NuGet Library for PDF nuget.org/packages/IronPdf/
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 DLL

Compress 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")
VB   C#

Compress Images - Size Comparison

Reduced by 39.24%!!

Compress images - size comparison

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")
VB   C#

Compress Tree Structure - Size Comparison

Reduced by 67.90%!! This percentage increases with larger table PDF.

Compress tree structure - size comparison

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")
VB   C#

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.

Chaknith Bin

Software Engineer

Chaknith is the Sherlock Holmes of developers. It first occurred to him he might have a future in software engineering, when he was doing code challenges for fun. His focus is on IronXL and IronBarcode, but he takes pride in helping customers with every product. Chaknith leverages his knowledge from talking directly with customers, to help further improve the products themselves. His anecdotal feedback goes beyond Jira tickets and supports product development, documentation and marketing, to improve customer’s overall experience.When he isn’t in the office, he can be found learning about machine learning, coding and hiking.