.NET Core下PDF压缩至40%-50%的免费库及Power Automate方案咨询
.NET Core 可用的免费PDF压缩类库
以下几个免费开源类库可实现PDF压缩,满足压缩至原大小40%-50%的需求:
- Ghostscript.NET:基于Ghostscript的.NET封装,通过调整PDF分辨率、字体嵌入等参数实现压缩。需先安装Ghostscript引擎,再通过NuGet引入Ghostscript.NET包。示例代码:
using Ghostscript.NET; using Ghostscript.NET.Rasterizer; public void CompressPdf(string inputPath, string outputPath) { var ghostscriptVersion = GhostscriptVersionInfo.GetLastInstalledVersion(); using (var rasterizer = new GhostscriptRasterizer()) { rasterizer.Open(inputPath, ghostscriptVersion, false); var settings = new GhostscriptSettings(); settings.Device = GhostscriptDevice.PdfWrite; settings.ResolutionX = 150; settings.ResolutionY = 150; settings.CustomSwitches.Add("-dPDFSETTINGS=/screen"); // 高压缩率的屏幕质量模式 rasterizer.Save(outputPath, settings); } }
调整-dPDFSETTINGS参数可控制压缩程度:/screen(高压缩)、/ebook(中等)、/printer(低压缩),配合分辨率调整能达到目标压缩比。
- iText 7 Community Edition:开源PDF处理库,支持通过移除冗余资源、压缩图像、优化字体等方式压缩PDF。示例代码:
using iText.Kernel.Pdf; using iText.Kernel.Utils; public void CompressPdfWithiText(string inputPath, string outputPath) { PdfReader reader = new PdfReader(inputPath); PdfWriter writer = new PdfWriter(outputPath); PdfDocument pdfDoc = new PdfDocument(reader, writer); writer.SetCompressionLevel(PdfWriter.BEST_COMPRESSION); PdfMerger merger = new PdfMerger(pdfDoc); merger.Merge(reader, 1, reader.GetNumberOfPages()); pdfDoc.Close(); reader.Close(); writer.Close(); }
额外调整图像压缩参数(如设置JPEG质量)可进一步提升压缩效果,满足40%-50%的压缩要求。
- PdfSharpCore:.NET Core版本的PdfSharp,支持通过压缩内容流、移除冗余元数据实现基础PDF压缩,适合简单场景的压缩需求。
通过Microsoft Power Automate实现PDF压缩
可以通过Power Automate实现PDF压缩,具体方法如下:
- 使用内置Compress PDF动作:在Power Automate中搜索“Compress PDF”动作(属于Adobe PDF Services连接器,部分环境提供免费试用额度),配置输入文件(如来自OneDrive/SharePoint),选择“高”压缩级别,执行后即可获取压缩后的PDF文件,该级别通常能达到40%-50%的压缩比。
- 通过Power Automate Desktop(PAD)实现:使用桌面流调用本地Ghostscript工具执行压缩命令,无需依赖云端连接器,适合本地文件的批量压缩场景。
- HTTP动作调用开源压缩API:若不想依赖Premium连接器,可通过HTTP动作调用免费PDF压缩API(需注意数据隐私风险),传入PDF文件后获取压缩结果并保存到指定位置。
内容的提问来源于stack exchange,提问作者Abhishek Jain
相关产品推荐
相关产品推荐

