文档中包含图片的话,会使得整个文档比较大,占用存储空间且不利于快速、高效的传输文件。针对一些包含大量高质图片的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
(本文完)图片