世界第一个开源可商用 .NET Office 转 PDF 工具/库 - MiniPdf

3 月 29 日
 littlemis

MiniPdf 是晚辈开发 MiniExcel 、Word 后最新开发工具,不需要安装任何软体,轻量化,开源可免费商用 主要解决目前好用的转换库要收费,需要安装 LibreOffice 、office 或 docker 情况 特点 1.无需 COM 、Office 、Adobe Acrobat 2.其他语言可以用预编译独立二进制文件,支援 Windows / Linux / macOS ,无需安装 .NET 执行阶段 3.完全开源免费,基于 Apache 2.0 授权,可自由商用,无任何限制

MiniPdf 目前只能处理基本的转换需求。对于复杂或高度自订的 Office 文件,转换结果可能不够理想。如果遇到相容性问题,欢迎提交 Issue 或发起 Pull Request ,一起让开源社群变得更好!

假如喜欢 MiniPdf 的理念,期待你的 star 跟推荐 🙌


GitHub : https://github.com/mini-software/MiniPdf Gitee : https://gitee.com/dotnetchina/MiniPdf


介绍

一个极简、轻量化的 .NET 库,用于将 Office 文件转换为 PDF 。

在线演示 — 在浏览器中快速体验,无需安装。

浏览器可用字体有限,渲染效果可能不够理想。建议在本地电脑上测试以获得最佳效果。


QQ 群 - 1 群 : 813100564 / 2 群 : 579033769 / 3 群 : 625362917 / 4 群 : 907750429


功能特性

注意: MiniPdf 目前只能处理基本的转换需求。对于复杂或高度自定义的 Office 文档,转换效果可能不够理想。如果您遇到兼容性问题,欢迎提交 Issue 或发起 Pull Request ,一起让项目变得更好!

快速开始

通过 NuGet 安装

dotnet add package MiniPdf

使用方式

using MiniSoftware;

// Excel 转 PDF
MiniPdf.ConvertToPdf("data.xlsx", "output.pdf");

// Word 转 PDF
MiniPdf.ConvertToPdf("report.docx", "output.pdf");

// 文件转字节数组
byte[] pdfBytes = MiniPdf.ConvertToPdf("data.xlsx");

// 流转字节数组
using var stream = File.OpenRead("data.xlsx");
byte[] pdfBytes = MiniPdf.ConvertToPdf(stream);

自定义字体

如果运行环境系统字体有限(例如容器或 Blazor WASM ),请在转换前先注册字体。

using MiniSoftware;

// 建议在应用启动时注册一个或多个字体
MiniPdf.RegisterFont("NotoSansSC", File.ReadAllBytes("Fonts/NotoSansSC-Regular.ttf"));
MiniPdf.RegisterFont("NotoColorEmoji", File.ReadAllBytes("Fonts/NotoColorEmoji.ttf"));

MiniPdf.ConvertToPdf("report.docx", "report.pdf");

说明:

命令行工具

MiniPdf 还提供命令行工具 MiniPdf.Cli,无需编写代码即可快速转换文件。

安装

dotnet tool install --global MiniPdf.Cli

使用方式

# 将 Excel 转为 PDF (输出: data.pdf )
minipdf data.xlsx

# 将 Word 转为 PDF
minipdf report.docx

# 指定输出路径
minipdf report.docx -o /path/to/output.pdf

# 注册自定义字体(适用于容器/无头环境)
minipdf report.docx --fonts ./Fonts

命令说明

命令 说明
minipdf <file> .xlsx / .docx 转换为 PDF
minipdf convert <file> -o <out> 转换并指定输出路径
minipdf --version 显示版本
minipdf --help 显示帮助

Native AOT 独立二进制文件

MiniPdf.Cli 支持 Native AOT( Ahead-of-Time ,预编译)— 在构建阶段将 C# 代码直接编译为原生机器码,如同 C/C++ 编译一样,生成独立的可执行文件。运行时无需 .NET 运行时或 JIT 编译器。

优势:

下载: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 (Apple Silicon) minipdf-osx-arm64.tar.gz

使用方式( Linux / macOS 示例):

# 下载并解压
tar -xzf minipdf-linux-x64.tar.gz

# 转换
./minipdf report.docx -o report.pdf

使用方式( Windows 示例):

# 解压 zip 后运行
.\minipdf.exe report.docx -o report.pdf
940 次点击
所在节点    分享创造
4 条回复
xinyu391
3 月 30 日
离商用 还差的远,
littlemis
3 月 30 日
@xinyu391 请问哪个文件测试有问题
styleyin
3 月 30 日
之前因为客户有需求,疯狂折腾 word 转 pdf,做来做去发现在并发不高的情况下还是 com 口调用最好用
littlemis
3 月 30 日
@styleyin 目前基本的需求我可以用 minipdf 取代,复杂的还是会用 com 接口(希望能未来成熟取代)
但好处因为 minipdf 是代码等级,所以并发处理能力远高于 com 接口 🙌

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/1201978

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX