乐于分享
好东西不私藏

一行代码搞定 Excel 和 Word 转 PDF,这个开源库终于有人认真做了

一行代码搞定 Excel 和 Word 转 PDF,这个开源库终于有人认真做了

服务器上要把 Excel 表格转成 PDF,你会怎么做?

很多人的第一反应是:装一个 LibreOffice,写个脚本调它的命令行。或者更狠的,在 Windows 服务器上装一套 Office,然后用 COM 接口去调。

然后你就会面对一地鸡毛:Office 在服务器上的版权问题、LibreOffice 版本和字体兼容的坑、进程僵死和内存泄漏、容器化部署困难……就为了把一个 .xlsx 转成一个 .pdf,结果搭了一套比你业务代码还复杂的外部依赖。

最近发现一个 .NET 库叫 MiniPdf,干的就是这件事——不用装任何外部组件,一行代码搞定 Office 文件转 PDF

它是什么

MiniPdf 是一个轻量级的 .NET 库,专门把 Excel(.xlsx)和 Word(.docx)文件转成 PDF。

最大的特点就一句话:纯 .NET 实现,不依赖 Office,不依赖 LibreOffice,不依赖任何外部程序

它基于 Apache POI + LibreOffice 的真实渲染数据做训练,配合 LLM 辅助开发,.NET 端纯自包含实现,不引入额外的运行时依赖,最终在 373 个测试用例上跑出了 97.2% 的综合得分。

什么概念?XLSX 转 PDF 得分 96.9%,DOCX 转 PDF 得分 97.6%,没有一个用例低于 70%——零失败。

这在”无 Office 服务端转换”这个场景里,数据相当能打。

怎么用

装 NuGet 包:

dotnet add package MiniPdf

一行代码转换:

using MiniSoftware;// Excel 转 PDFMiniPdf.ConvertToPdf("data.xlsx""output.pdf");// Word 转 PDFMiniPdf.ConvertToPdf("report.docx""output.pdf");// 直接返回 byte[],方便进一步处理byte[] pdfBytes = MiniPdf.ConvertToPdf("data.xlsx");// Stream 模式usingvar stream = File.OpenRead("data.xlsx");byte[] pdfBytes = MiniPdf.ConvertToPdf(stream);

如果你的容器或无头环境字体不全,先注册字体:

MiniPdf.RegisterFont("NotoSansSC", File.ReadAllBytes("Fonts/NotoSansSC-Regular.ttf"));MiniPdf.ConvertToPdf("report.docx""report.pdf");

搞定。

CLI 工具:不服上命令行

不想写代码也行。装个 CLI 工具:

dotnet tool install --global MiniPdf.Cli

然后:

# 转换 Excelminipdf data.xlsx# 转换 Word,指定输出路径minipdf report.docx -o /path/to/output.pdf# 指定字体目录(容器环境必备)minipdf report.docx --fonts ./Fonts

就这些。不需要安装 Office 或 LibreOffice,不需要任何外部依赖。

Native AOT:连运行时都不需要

如果你的场景更极端——连 .NET 运行时都不想装怎么办?

MiniPdf.Cli 支持 Native AOT 编译,直接生成各平台的原生可执行文件。

从 GitHub Releases 下载对应平台的压缩包,解压就能跑:

平台
文件
Windows x64
minipdf-win-x64.zip
Windows ARM64
minipdf-win-arm64.zip
Linux x64
minipdf-linux-x64.tar.gz
Linux ARM64
minipdf-linux-arm64.tar.gz
macOS x64
minipdf-osx-x64.tar.gz
macOS ARM64
minipdf-osx-arm64.tar.gz

这就是一个单文件原生程序,不需要安装任何东西。在 CI/CD 流水线里,直接 curl 下载、解压、执行,三步搞定。

对于需要跑在 Alpine 容器、树莓派、或者各种奇怪 Linux 发行版上的场景,这个能力相当有价值。

跨平台:Windows、Linux、macOS 全覆盖

MiniPdf 本身是 .NET 库,.NET 能跑到的地方,它就能跑

同时 Native AOT 二进制包覆盖了三大平台的主流架构:Windows x64/ARM64、Linux x64/ARM64、macOS x64/ARM64(Apple Silicon)。

意味着不管你用的是 Windows 服务器、Linux 服务器、还是 macOS 做开发机,都能无缝使用同一套方案。

协议友好:Apache 2.0,商业使用仅需署名

这是很多技术团队关心的现实问题。

MiniPdf 采用 Apache 2.0 许可证,商业使用仅需保留署名,不需要开源你的业务代码。你可以把它用在公司内部项目、外包项目、甚至打包进商业产品里发行。

结合”零外部依赖”这个特点,这意味着你可以在不引入任何合规风险的前提下,把 Office 到 PDF 的转换能力嵌入到任何产品里。

适用场景

说几个我第一时间想到的落地场景:

报表系统:很多系统的报表模块要导出 PDF,用 MiniPdf 在服务端直接生成,不用前端 JS 库做复杂排版,也不用装 Office。

合同生成:把 Word 模板渲染后直接转 PDF,一行调用,没有 COM,没有进程调度。

电子发票:财务系统生成 Excel 格式的对账单,自动转 PDF 存档,服务端无依赖。

CI/CD 流水线:把测试报告、周报自动转 PDF 并发送,不需要在 Runner 上装 LibreOffice。

文档归档系统:大批量 Office 文件转 PDF 归档,Native AOT 模式下可分布式部署,性能线性扩展。

在线体验:不用安装,先试试再说

如果想先看看效果再决定要不要用,官网有在线 Demo

https://mini-software.github.io/MiniPdf/

直接上传一个 Excel 或 Word 文件,浏览器里看转换结果。体验门槛为零。

结语

服务端 Office 转 PDF 这个需求,长期以来存在两个极端:要么依赖重量级的外部组件(Office COM、LibreOffice),引入复杂的部署和运维负担;要么用前端 JS 库,牺牲精度和一致性。

MiniPdf 找到的是一个务实的中间地带:用 .NET 内置能力 + Apache POI 解析 + LLM 辅助训练,换来零外部依赖、97%+ 转换精度、和随手可用的 CLI 工具。

好用的东西,有时候不需要很重。

如果你的项目正被”怎么在服务器上转 PDF”这个问题困扰,不妨给它一个机会——一个 NuGet 包,一行代码,或许就够了。


你们现在是用什么方案做服务端 Office 转 PDF 的?LibreOffice?NPOI?还是直接用前端导出?评论区聊聊踩坑经历。