文档中包含图片的话,会使得整个文档比较大,占用存储空间且不利于快速、高效的传输文件。针对一些包含大量高质图片的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 > )
{
for (int j = ; j < images.Length; j++)
{
Image image = images[j];
PdfBitmap bp = new PdfBitmap(image);
//设置bp.Quality值,压缩图片
bp.Quality = ;
//将压缩后的图片替换原有图片
page.ReplaceImage(j, bp);
}
}
}
//保存文档
doc.SaveToFile("Output2.pdf"); }
}
}

针对包含大量高质图片的PDF文档,以上方法可以有效压缩文档,并且不会出现市面上压缩软件在压缩文档时存在的广告水印或者破坏源文档的情况。方法介绍到此,如果对您有用,欢迎转载(转载请注明出处)。

(本文完)

C# 压缩PDF图片的更多相关文章

  1. python压缩pdf(指定缩放比例)

    python压缩pdf(指定缩放比例) 原理 pdf文件处理使用https://pymupdf.readthedocs.io/en/latest/index.html库可以轻松实现,该库的官方说明文档 ...

  2. php分10个不同等级压缩优化图片

    今天找到一个php写的压缩图片程序,可以分10个等级(0-9)来压缩,0等级时压缩比率不是很大,图片不会失真:随着压缩等级不断增大,图片会变得越来越不清晰,通常压缩后图片大小可以减少到原来的50%,压 ...

  3. java多图片上传--前端实现预览--图片压缩 、图片缩放,区域裁剪,水印,旋转,保持比例。

    java多图片上传--前端实现预览 前端代码: https://pan.baidu.com/s/1cqKbmjBSXOhFX4HR1XGkyQ 解压后: java后台: <!--文件上传--&g ...

  4. php如何优化压缩的图片

    php程序开发中经常涉及到生成缩略图,利用php生成缩略图这个过程本身没难度,但是你知道php能够优化调节生成的缩略图的质量吗?也就是说php能够控制生成缩略图的清晰度以及生成后的缩略图的体积.下面我 ...

  5. php分10个不同等级压缩优化图片(PNG)

    今天找到一个php写的压缩图片程序,可以分10个等级(0-9)来压缩,0等级时压缩比率不是很大,图片不会失真:随着压缩等级不断增大,图片会变得越来越不清晰,通常压缩后图片大小可以减少到原来的50%,压 ...

  6. 移动端 H5 拍照 从手机选择图片,移动端预览,图片压缩,图片预览,再上传服务器

    前言:最近公司的项目在做全网营销,要做非微信浏览器的wap 站 的改版,其中涉及到的一点技术就是采用H5 选择手机相册中的图片,或者拍照,再将获取的图片进行压缩之后上传. 这个功能模块主要有这5点比较 ...

  7. Java实现图片压缩代码,图片大小转换

    在很多项目中我们会把上传的图片做处理,比较图片上传过多对服务器的容量和带宽有很多的浪费,如果不是必须的高清图片,我们可以通过代码来做压缩.在我的项目中我们压缩图片的目的是让web页面打开的速度很快,并 ...

  8. android 拍照或者图库选择 压缩后 图片 上传

    通过拍照或者从相册里选择图片通过压缩并上传时很多应用的常用功能,记录一下实现过程 一:创建个临时文件夹用于保存压缩后需要上传的图片 /** * path:存放图片目录路径 */ private Str ...

  9. Python,PIL压缩裁剪图片

    自己写了用来压缩 DC 照片的,批量处理整目录文件,非常方便.需要安装 PIL #!/usr/bin/env python import Image import os import os.path ...

随机推荐

  1. UNIX环境高级编程——环境变量表读取/添加/修改/删除

    #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char* pVal ...

  2. 使用 symbolicatecrash 解析崩溃堆栈

    一.先引用一位牛人的博贴: xcode解crashlog工具symbolicatecrash的使用 在xocde编译app的时候会同时生成一个以dsym(该app对应的符号表)作为后缀的文件,每个ap ...

  3. 剑指Offer——二叉树

    剑指Offer--二叉树 前言 数据结构通常是编程面试中考察的重点.在参加面试之前,应聘者需要熟练掌握链表.树.栈.队列和哈希表等数据结构,以及它们的操作.本片博文主要讲解二叉树操作的相关知识,主要包 ...

  4. Servlet3.0注解@WebInitParam和@WebServlet

    在以前的servlet中我们初始化一些参数都是配置在web.xml中的,自从servlet3.0之后给我们提供了注解@WebServlet和@WebInitParam,@WebServlet是用来配置 ...

  5. (一〇八)iPad开发之横竖屏适配

    在iPad开发中,横竖屏的视图常常是不同的,例如侧边栏Dock,在横屏时用于屏幕较宽,可以展示足够多的内容,每个按钮都可以展示出标题:而竖屏时Dock应该比较窄,只显示图标不现实按钮标题. iPad比 ...

  6. A*寻路算法入门(三)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...

  7. 一个Bootstrap的例子--关于validate

    </pre><pre name="code" class="html"><%@ page language="java& ...

  8. Mac下关于->您不能拷贝项目“”,因为它的名称太长或包括的字符在目的宗卷上无效。<-的删除

    打开 Terminal 应用程序. 键入: sudo rm -rf注意:在"-rf"后键入一个空格.没有空格该命令将不能执行.在步骤 6 之前请不要按下 Return 键. 打开您 ...

  9. pig函数以及关键字 的一些实例应用的总结(来自pig笔记)

    http://wenku.baidu.com/link?url=yb7KnpSj9nHxWk_MsEVUezvB24evRf9wR87FX0dTT77pGXNXi6k3o_kTmAkBrpIHTqo6 ...

  10. Android(Lollipop/5.0) Material Design(二) 入门指南

    Material Design系列 Android(Lollipop/5.0)Material Design(一) 简介 Android(Lollipop/5.0)Material Design(二) ...