C# 压缩PDF图片

  文档中包含图片的话,会使得整个文档比较大,占用存储空间且不利于快速、高效的传输文件。针对一些包含大量高质图片的PDF文档,若是对图片进行压缩,可以有效减少文档的占用空间。并且,在文档传输过程中也可以减少传送时间,提高效率。本文将介绍2种通过C#来实现PDF图片文档压缩的方法。使用此方法,需要用到最新版本组件Spire.PDF for .NET3.9.462。下面是通过C#代码来压缩图片,从而实现整个PDF文档压缩的方法。

  提示:编辑代码前,需要安装该组件,并添加引用dll文件到项目程序中,同时添加指令。

  方法一

  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");

  }

  }

  }

  复制代码(编辑:雷林鹏 来源:网络)

posted @ 2018-08-06 09:41  雷林鹏  阅读(1096)  评论(0编辑  收藏  举报