• 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:UsersAdministratorDesktopInput.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:UsersAdministratorDesktopInput.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");

      }

      }

      }

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

  • 相关阅读:
    ASP.NET ZERO 学习 JTable的ChildTable用法
    ASP.NET ZERO Core Application 学习笔记
    uploadify ASP.net 使用笔记
    金额的加减乘除运算
    利用autoit自动关闭指定标题窗口
    Struts2源代码解读之Action调用
    利用btrace工具监控在线运行java程序
    自己实现的简单MVC框架(类似Struts2+Spring)
    简单实用后台任务执行框架(Struts2+Spring+AJAX前端web界面可以获取进度)
    mybatis源代码分析:mybatis延迟加载机制改进
  • 原文地址:https://www.cnblogs.com/pengpeng1208/p/9428566.html
Copyright © 2020-2023  润新知