C# 压缩PDF文件

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;
  1. 保存压缩后的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教程页

相关推荐
six_10 小时前
C# 上位机(持续更新中)
前端·面试·c#
吴可可12311 小时前
多段线扩展数据的应用场景
c#
fangzhanpeng16812 小时前
快速掌握C#语言基础知识点(1.基础数据类型)
开发语言·c#·1024程序员节
慧都小妮子12 小时前
C# 实现AI合同审查:从读取、风险标注到批量签发
ai·自然语言处理·c#·.net·办公自动化·ai合同审查·文档ai代理
李高钢17 小时前
C# WPF 的 Prism 框架入门:核心概念与一个完整示例
开发语言·c#·wpf
牛哇网络工作室1 天前
UnityHDRP写实数字人全流程基础5—语音输入和语音识别
android·unity·c#·游戏引擎·aigc·语音识别·xcode
zlinear数据采集卡2 天前
数据采集卡从入门到精通(9):分辨率与精度——16位卡不等于1/65536的精度
开发语言·数据库·fpga开发·开源·c#
深澈Vincel2 天前
我用 C# + WebView2 做了一个针对“流氓软件”的“一键清理工具“:架构实践与踩坑记录
c#
zlinear数据采集卡2 天前
数据采集卡从入门到精通(7):流水线型ADC——级级接力,高速与高精的平衡术
开发语言·arm开发·嵌入式硬件·fpga开发·c#
kingwebo'sZone2 天前
C# 根据公式计算的方法
开发语言·c#