PDF 文件可以包含文本、图片及各种媒体元素,但如果文件太大则会影响传输效果同时也会占用过多磁盘空间。通过压缩PDF文件,能够有效减小文件大小,从而提高传输效率并节省存储空间。想要通过C#代码快速有效地压缩 PDF 文件,下面是实现思路:

在 C# 中压缩 PDF

1、在VS中使用 NuGet包管理器将 “spire.pdf” 安装到程序中,并导入所需的命名空间。(也可下载Spire.PDF后手动引入);

2、实例化 PdfCompressor 类对象并加载需压缩的PDF文件;

3、通过 TextCompressionOptions 类来压缩PDF文件中的字体;

//获取文本压缩选项
textCompression = compressor.Options.TextCompressionOptions;
//设置是否压缩字体
textCompression.CompressFonts = true;
//设置是否嵌入字体
textCompression.UnembedFonts = true;

4、通过 ImageCompressionOptions 类来压缩PDF文件中的图片;

//获取图片压缩选项
ImageCompressionOptions imageCompression = compressor.Options.ImageCompressionOptions;
//设置是否压缩图片
imageCompression.CompressImage = true;
//设置图片质量
imageCompression.ImageQuality = ImageQuality.Low;
//设置是否调整图片大小
imageCompression.ResizeImages = true;

5. 保存压缩后的PDF文件。

PDF压缩前后效果对比如图:

Spire.PDF for .NET 提供了接口来压缩PDF文件中的字体和图片,其中将图片质量设置为low时压缩效果最好,但可能文件可读性会受到一定影响。在使用时可根据自己的需求来设置图片质量 (High/ Medium/ Low)。

附上完整代码供自行测试:

using Spire.Pdf;
using Spire.Pdf.Conversion.Compression; namespace CompressPdf
{
class Program
{
static void Main(string[] args)
{
//实例化 PdfCompressor 类对象并加载PDF文件
PdfCompressor compressor = new PdfCompressor("文件.pdf"); //获取文本压缩选项
TextCompressionOptions textCompression = compressor.Options.TextCompressionOptions; //设置是否压缩字体
textCompression.CompressFonts = true; //设置是否嵌入字体
textCompression.UnembedFonts = true; //获取图片压缩选项
ImageCompressionOptions imageCompression = compressor.Options.ImageCompressionOptions; //压缩图片
imageCompression.CompressImage = true; //设置图片质量
imageCompression.ImageQuality = ImageQuality.High; //调整图片大小
imageCompression.ResizeImages = true; //将压缩后PDF保存至指定位置
compressor.CompressToFile("压缩.pdf");
}
}
}

想了解C#操作PDF文件的更多示例,点击前往Spire.PDF教程页

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

  1. pdf文件中截取eps图片并压缩

    最近遇到了一个问题,需要从pdf裁剪出其中部分的矢量图格式的图片,并保存为eps格式,方便使用. 最简单的方法就是先用acrobat pro将pdf进行页面抽取,并裁剪,剩下所需要的图片部分,然后另存 ...

  2. C#的Process类调用第三方插件实现PDF文件转SWF文件

    在项目开发过程中,有时会需要用到调用第三方程序实现本系统的某一些功能,例如本文中需要使用到的swftools插件,那么如何在程序中使用这个插件,并且该插件是如何将PDF文件转化为SWF文件的呢?接下来 ...

  3. 实战动态PDF在线预览及带签名的PDF文件转换

    开篇语: 最近工作需要做一个借款合同,公司以前的合同都是通过app端下载,然后通过本地打开pdf文件,而喜欢创新的我,心想着为什么不能在线H5预览,正是这个想法,说干就干,实践过程总是艰难的,折腾了3 ...

  4. 15个最好的PDF转word的在线转换器,将PDF文件转换成doc文件

    PDF是一种文件格式,包含文本,图像,数据等,这是独立于操作系统的文件类型.它是一个开放的标准,压缩,另一方面DOC文件和矢量图形是由微软文字处理文件.该文件格式将纯文本格式转换为格式化文档.它支持几 ...

  5. 用C#制作PDF文件全攻略

    用C#制作PDF文件全攻略 目  录 前    言... 3 第一部分 iText的简单应用... 4 第一章 创建一个Document 4 第一步 创建一个Document实例:... 5 第二步 ...

  6. node.js 使用 UglifyJS2 高效率压缩 javascript 文件

    UglifyJS2 这个工具使用很长时间了,但之前都是在 gulp 自动构建 时用到了 UglifyJS 算法进行压缩. 最近玩了一下 UglifyJS2 ,做了一个 在线压缩javascript工具 ...

  7. 怎么用PHP在HTML中生成PDF文件

    原文:Generate PDF from html using PHP 译文:使用PHP在html中生成PDF 译者:dwqs 利用PHP编码生成PDF文件是一个非常耗时的工作.在早期,开发者使用PH ...

  8. Pdf File Writer 中文应用(PDF文件编写器C#类库)

    该文由小居工作室(QQ:2482052910)    翻译并提供解答支持,原文地址:Pdf File Writer 中文应用(PDF文件编写器C#类库):http://www.cnblogs.com/ ...

  9. PDF文件优缺点

    PDF的优点: 一般公司的公文档都是用PDF格式传递给员工,因为PDF可防止他人无意中触到键盘修改文件内容. 再有就是,当我们将毕业设计报告用word编辑后,发送给导师查看时,也建议采用PDF格式.因 ...

  10. asp.net2.0导出pdf文件完美解决方案【转载】

    asp.net2.0导出pdf文件完美解决方案 作者:清清月儿 PDF简介:PDF(Portable Document Format)文件格式是Adobe公司开发的电子文件格式.这种文件格式与操作系统 ...

随机推荐

  1. 02LED灯

    目录 一.LED灯是什么 二.原理图 三.对LED进行操作 1.点亮第一个LED灯 2.LED双数点亮 3.LED流水灯 四.延迟函数的生成 一.LED灯是什么 LED是一个发光二极管,当一段为高电平 ...

  2. ubuntu 20.04 网络配置

    参考链接:ubuntu 20.04 网络配置 网络配置文件目录:/etc/netplan/ 配置实例 # 静态 network: version: 2 ethernets: ens33: addres ...

  3. 2022-02-08 IValueConverter和StringFormat

    主页 后台 stringFormat

  4. 分布式ID性能评测:CosId VS 美团 Leaf

    分布式ID性能评测:CosId VS 美团 Leaf 基准测试环境 MacBook Pro (M1) JDK 17 JMH 1.36 运行在本机的Docker 的 mariadb:10.6.4 运行基 ...

  5. 代码随想录算法训练营第八天| LeetCode 344.反转字符串 541. 反转字符串II 151.翻转字符串里的单词

    344.反转字符串 卡哥建议: 本题是字符串基础题目,就是考察 reverse 函数的实现,同时也明确一下 平时刷题什么时候用 库函数,什么时候 不用库函数 题目链接/文章讲解/视频讲解:https: ...

  6. vxe-table中文文档

    https://xuliangzhan_admin.gitee.io/vxe-table/#/table/grid/fullEdit

  7. [docker]安装常见数据库

    前言 本文使用docker安装常见数据库大部分没配置什么参数,只是基本的安装. 不只是数据库,还有elasticsearch.rabbitmq等和数据相关的服务. docker 版本: 18.06.3 ...

  8. [HDCTF2019]Maze 反汇编-花指令处理

    这是一道迷宫花指令加upx脱壳处理的题 先介绍花指令 一. 概述 花指令是对抗反汇编的有效手段之一,正常代码添加了花指令之后,可以破坏静态反汇编的过程,使反汇编的结果出现错误.错误的反汇编结果会造成破 ...

  9. langchain中的LLM模型使用介绍

    简介 构建在大语言模型基础上的应用通常有两种,第一种叫做text completion,也就是一问一答的模式,输入是text,输出也是text.这种模型下应用并不会记忆之前的问题内容,每一个问题都是最 ...

  10. 数据可视化【原创】vue+arcgis+threejs 实现流光立体墙效果

    本文适合对vue,arcgis4.x,threejs,ES6较熟悉的人群食用. 效果图: 素材: 主要思路: 先用arcgis externalRenderers封装了一个ExternalRender ...