PDF文檔是一種支持特長文件,集成度和安全可靠性都較高的文件格式,在各個領域都應用廣泛。在處理PDF文檔時,常常也會遇到包含很多圖片的PDF文檔,這樣的文檔會佔用比較大的空間,而且在文件傳輸時也確實會耗費不少時間。解決辦法之一就是將文檔中的圖片進行壓縮,使文檔變小。這裏推薦兩種壓縮PDF文檔圖片的方法。方法中用到了組件Spire.PDF for .NET.(轉載自博客http://www.cnblogs.com/Yesi/p/7928947.html)
方法一
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");
方法二
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"); } } }