In certain cases, large PDF documents are not welcome. For instance, when you want to transfer PDF files by email, or when you want to store PDF files on a device with limited storage capacity. Compressing the sizes of PDF files could be a perfect solution to this problem. This article will show you how to compress contents (unwanted commented lines, white spaces, etc.) and images in a PDF document by using Spire.PDF for .NET with C# and VB.NET.
Reducing PDF size by removing objects like images, fields, annotations, bookmarks, attachments, and embedded fonts is not involved in this article. If you need to perform some of these operations using our library, check the corresponding articles listed here.
Install Spire.PDF for .NET
To begin with, you need to add the DLL files included in the Spire.PDF for.NET package as references in your .NET project. The DLL files can be either downloaded from this link or installed via NuGet.
PM> Install-Package Spire.PDF
Compress Contents and Images in PDF
The following are detailed steps to compress contents and images in a PDF document using Spire.PDF for .NET.
- Create an object of PdfDocument class.
- Load a sample PDF document using PdfDocument.LoadFromFile() method.
- Disable incremental update by setting the PdfDocument.FileInfo.IncrementalUpdate property to false.
- Set the compression level to best to compress the contents in the document. There are a few other levels that you can choose from the PdfCompressionLevel enumeration.
- Loop through the pages in the document, and get the image information collection of each page using PdfImageHelper.GetImagesInfo() method.
- Traverse all items in the collection, and use the method PdfImageHelper.ReplaceImage() to place the specific image with the compressed one.
- Save the document to another PDF file using PdfDocument.SaveToFile() method.
- C#
- VB.NET
using Spire.Pdf; using Spire.Pdf.Graphics; using System.Drawing; using Spire.Pdf.Utilities; namespace CompressPdf { class Program { static void Main(string[] args) { //Create a PdfDocument object PdfDocument doc = new PdfDocument(); //Load a PDF file doc.LoadFromFile(@"C:\Users\Administrator\Desktop\Document\PDF\sample.pdf"); //Disable incremental update doc.FileInfo.IncrementalUpdate = false; //Set the compression level to best doc.CompressionLevel = PdfCompressionLevel.Best; //Loop through the pages in the document foreach (PdfPageBase page in doc.Pages) { //Create a PdfImageHelper object PdfImageHelper helper = new PdfImageHelper(); //Get image information collection of a certain page PdfImageInfo[] imagesInfo = helper.GetImagesInfo(page); //Loop through the image information collection foreach (PdfImageInfo imageInfo in imagesInfo) { //Replace a certain image with the compressed image helper.ReplaceImage(imageInfo, CompressImage(imageInfo.Image)); } } //Save the document to a PDF file doc.SaveToFile("output.pdf"); doc.Close(); } //Compress an image by reducing the quality private static PdfBitmap CompressImage(Image img) { PdfBitmap newImage = new PdfBitmap(img); newImage.Quality = 10; return newImage; } } }
Apply for a Temporary License
If you'd like to remove the evaluation message from the generated documents, or to get rid of the function limitations, please request a 30-day trial license for yourself.