文檔中包含圖片的話,會使得整個文檔比較大,佔用存儲空間且不利於快速、高效的傳輸文件。針對一些包含大量高質圖片的PDF文檔,如果對圖片進行壓縮,能夠有效減小文檔的佔用空間。而且,在文檔傳輸過程當中也能夠減小傳送時間,提升效率。本文將介紹2種經過C#來實現PDF圖片文檔壓縮的方法。使用此方法,須要用到最新版本組件Spire.PDF for .NET3.9.462。下面是經過C#代碼來壓縮圖片,從而實現整個PDF文檔壓縮的方法。html
提示:編輯代碼前,須要安裝該組件,並添加引用dll文件到項目程序中,同時添加指令。spa
方法一code
using Spire.Pdf; using System.Drawing; using Spire.Pdf.Graphics; using Spire.Pdf.Exporting; namespace CompressImage_PDF { class Program { static void Main(string[] args) { //初始化一個PdfDocument類實例並加載一個pdf文檔 PdfDocument doc = new PdfDocument(@"C:\Users\Administrator\Desktop\Input.pdf"); //禁用增量更新 doc.FileInfo.IncrementalUpdate = false; //遍歷PDF全部頁,診斷頁面是否含有圖片 foreach (PdfPageBase page in doc.Pages) { if (page != null) { if (page.ImagesInfo != null) { foreach (PdfImageInfo info in page.ImagesInfo) { //調用方法TryCompressImage()壓縮圖片 page.TryCompressImage(info.Index); } } } } //保存文檔 doc.SaveToFile("Output.pdf"); } } }
方法二htm
using Spire.Pdf; using System.Drawing; using Spire.Pdf.Graphics; namespace CompressImage_PDF { class Program { static void Main(string[] args) { //初始化一個PdfDocument類實例並加載一個pdf文檔 PdfDocument doc = new PdfDocument(@"C:\Users\Administrator\Desktop\Input.pdf"); //禁用增量更新 doc.FileInfo.IncrementalUpdate = false; //遍歷全部PDF頁,提取圖片 foreach (PdfPageBase page in doc.Pages) { Image[] images = page.ExtractImages(); //遍歷全部圖片 if (images != null && images.Length > 0) { for (int j = 0; j < images.Length; j++) { Image image = images[j]; PdfBitmap bp = new PdfBitmap(image); //設置bp.Quality值,壓縮圖片 bp.Quality = 20; //將壓縮後的圖片替換原有圖片 page.ReplaceImage(j, bp); } } } //保存文檔 doc.SaveToFile("Output2.pdf"); } } }
針對包含大量高質圖片的PDF文檔,以上方法能夠有效壓縮文檔,而且不會出現市面上壓縮軟件在壓縮文檔時存在的廣告水印或者破壞源文檔的狀況。方法介紹到此,若是對您有用,歡迎轉載(轉載請註明出處)。blog
(本文完)圖片