← 首页
诚实的比较

为什么选择 Majorsilence.Pdf?

.NET 的 PDF 库并不稀缺。以下是对 Majorsilence.Pdf 定位的一次清晰审视:它擅长什么,以及在什么情况下您应该改用其他工具。


库对比

下表涵盖了最常被选用的 .NET PDF 库。所有信息均基于截至 2026 年年中的公开文档。

许可证 依赖项 包大小 API 模型 .NET 支持
Majorsilence.Pdf MIT / Apache / BSD ~75 KB 画布 / 流式接口 NS2.0, .NET 8 & 10
iText 7 AGPL 或商业许可 多个 NuGet 引用 ~6 MB 文档/元素树 .NET Standard 2.0+
QuestPDF 社区版 / 商业版 SkiaSharp(原生) ~10 MB(含原生库) 流式布局引擎 .NET 6+
PdfSharp MIT 无(核心部分) ~400 KB GDI 风格绘图 .NET 6+(v0.1.x 支持 NS2.0)
Syncfusion PDF 商业版 / 社区版 Syncfusion 套件 ~4 MB 文档/元素树 .NET Standard 2.0+
Puppeteer / wkhtmltopdf MIT(Puppeteer) 需要原生二进制文件 50–150 MB(浏览器) HTML → PDF 渲染 任意(通过 CLI/桥接)

QuestPDF 的“社区版”对年收入低于 100 万美元的组织免费;超过该门槛则需要付费许可证。iText 7 对闭源软件要求商业许可证。Syncfusion 为个人开发者和小团队提供免费的社区许可证。


何时选择 Majorsilence.Pdf

适合的场景
  • 零运行时依赖是硬性要求——容器、AWS Lambda、AOT 编译,或严格的安全审计
  • 您需要 MIT、Apache-2.0 或 BSD-3-Clause 许可,且不希望有 AGPL 带来的复杂性
  • 您希望拥有一个小巧、可审计的代码库,无需管理任何原生二进制文件
  • 您的思维模型是基于画布坐标的绘制——在 (x, y) 处放置文本、绘制线条、嵌入图像
  • 您正在构建发票、报表、证书、收据或数据导出,且您完全掌控布局
  • 裁剪友好性或 AOT 编译很重要(无服务器冷启动、嵌入式 .NET)
  • 您希望在 Windows、Linux 和 macOS 上发布,而不必担心原生字体渲染库
不太适合的场景
  • 您需要读取、编辑或合并带有注释、AcroForms 或 XFA 的复杂现有 PDF
  • 监管机构要求 PDF/A 或 PDF/UA 合规认证
  • 您更喜欢基于流式布局的模型(自动换行的段落、可自动分页的表格),而非显式坐标
  • 您需要生产级的阿拉伯文整形或复杂的 BiDi 文本渲染
  • 您的内容已经以 HTML/CSS 模板形式存在,并且像素级精确的浏览器渲染至关重要
  • 您需要高级的带时间戳数字签名(带 TSA 的 PKCS#12)或长期验证(PAdES LTV)

何时选择其他方案

以下是诚实的建议。请根据自身约束条件选择合适的工具。

iText 7
如果您需要 .NET 中最完整的 PDF 功能集——AcroForm 操作、PAdES/LTV 数字签名、PDF/A 和 PDF/UA 生成、编辑遮盖,或读取和修改复杂的现有 PDF——并且您可以接受 AGPL 许可证或购买商业许可证。
QuestPDF
如果您更倾向于以行、列和流动内容的方式思考(布局引擎而非绘图画布),且您的营收低于社区版门槛。QuestPDF 的流式文档模型非常适合内容丰富的文档,其中自动分页比像素级精确的定位更重要。
PdfSharp
如果您想要另一个零依赖的 MIT 库,具有 GDI 风格的绘图 API,并面向 .NET 6+。PdfSharp 是一个可靠的替代方案,拥有更大的社区和更长的历史。这两个库的优势相似,可评估其 API 风格以确定哪个更适合您的团队。
Puppeteer / Playwright / wkhtmltopdf
如果您的文档内容已经以 HTML + CSS 形式编写——例如由 Razor 视图渲染的模板化发票——并且您需要像素级精确的浏览器引擎渲染(网络字体、CSS grid、背景图像)。代价是需要依赖较大的原生二进制文件,且生成速度较慢。
Syncfusion / DevExpress / Telerik
如果您已经拥有这些组件套件之一的许可,并希望为所有 UI 和文档生成需求使用单一供应商。这些套件中捆绑的 PDF 库功能齐全,并在其生态系统内得到良好支持。

设计理念

大多数 PDF 库诞生于 .NET 还等同于 Windows、NuGet 还很年轻,“零依赖”尚未成为设计目标的年代。它们随着时间推移积累了功能、原生代码和许可证复杂性。

Majorsilence.Pdf 从不同的约束条件出发:

经过生产环境验证。Majorsilence.Pdf 是驱动 Majorsilence Reporting 的 PDF 渲染引擎。它不是一个副业项目——它是 Reporting 生成真实文档时所运行的库。

让繁琐的事情变简单。

生成一份 PDF——发票、证书、数据导出——应该只需要几行代码,而不是一整页的样板代码。这个库的接口有意保持精简:一个文档、若干页面、一块画布。您放置内容,您保存。就这么简单。

零就应该是真正的零。

而不是“安装平台包后运行时才是零”或“不使用字体时才是零”。只需一次 dotnet add package,别无他物。没有需要审计的传递性依赖树,没有需要放进容器镜像的原生二进制文件,也没有需要与法务审查的 AGPL 风险。

纯托管代码。

整个库都是 IL 代码。它可以干净地裁剪、提前编译(AOT),并且在 Windows、Linux、macOS、ARM 和 x64 上表现一致——无需按条件选择原生资源或进行运行时功能检测。

三重许可。可任选 MIT、Apache-2.0 或 BSD-3-Clause 中最适合您项目的一种。没有 AGPL 层级,没有社区版与商业版的区分,也没有会改变您义务的营收门槛。