为 2026 年文档生成选择最佳 C# 库
起价$2,200每开发者的入门级,GemBox.Bundle设定了一个明确的采购标记:七个文档库(电子表格、文档、PDF、演示、电子邮件、成像、PdfViewer),在一个单一的永久许可证下,包含在每个付费层次的免版税无限制部署。 Iron Suite 设置了一个不同的标记:十个产品在一个永久许可证下,起始于 $2,998,为许可座位提供免版税部署,并为超出基础的SaaS或OEM情形提供单独的再分发附加。 两者都没有Office依赖,两者都在现代.NET上跨平台运行,两者都提供永久许可证。
这篇文章的重点是一个采购导向的决定实际上依赖于什么:每个套件的定价是多少,捆绑包中有什么,以及如何处理SaaS再分发。 以下是为集成它的工程师准备的开发人员级别的表面和代码示例。
一目了然的比较
| 维度 | GemBox.Bundle | Iron Suite |
|---|---|---|
| 定价定位 | 单个开发者 $2,200; 小团队 (10位开发者) $11,000; 大团队 (50位开发者) $33,000。续订优惠40%(如果在过期前续订则优惠60%)。 | Lite $2,998 / Plus $4,498 / Professional $8,998 / Unlimited $17,998(Enterprise自定义); 全部10个产品以2个的价格 |
| 许可模式 | 每位开发者享有永久许可证,提供1年的免费更新和1年的专业支持; 在每个付费层级享有免版税的无限制部署; 有限的免费层级,附每文件限制 | 每开发者的永久许可; 许可席位免版税; SaaS/OEM通过Redistribution Add-On |
| 捆绑中的组件 | 7个库(电子表格、文档、PDF、演示文稿、电子邮件、图像处理、PdfViewer) | 10个产品(IronPDF、IronWord、IronXL、IronPPT、IronOCR、IronBarcode、IronQR、IronPrint、IronZIP、IronWebScraper) |
| 格式/能力覆盖 | XLSX, DOCX, PDF, PPTX, MSG/EML + SMTP/POP/IMAP,栅格图像 | PDF、Office、OCR、Barcode/QR、ZIP、Print、Web Scraping |
| 跨平台/云 | Windows, Linux, macOS。 部署只需要.NET | Windows、Linux、macOS、Docker、Azure、AWS Lambda |
| .NET运行时支持 | .NET Framework 3.5+,.NET Standard 2.0/2.1,现代 .NET 6/7/8/9(每个组件,需在NuGet上验证) | .NET Framework 4.6.2+, .NET Core, .NET 6/7/8/9/10 |
| 目标市场 | SMB和中型市场的.NET开发者; 轻量级的Office/PDF/Email工具包购买者 | 独立开发者,小型中型市场.NET团队,ISVs |
| 供应商 | GemBox Software | Iron Software |
如果在每个付费层级的免版税无限制部署是最重要的(ISVs无需单独的OEM SKU为许多客户站点部署),GemBox.Bundle就内置了这些功能,单个开发者的价格为$2,200。 如果较低的入门价格和更广泛的捆绑(含手写的OCR、条形码、QR、网页抓取、编程打印)是最重要的,Iron Suite 以 $2,998 覆盖Lite级别的这些需求。
定价和许可
GemBox.Bundle作为按每位开发者永久许可证出售,分为三个层级:单个开发者$2,200,小团队(最多10位开发者)$11,000,大团队(最多50位开发者)$33,000。每个层级都包括一年的专业支持和一年的免费更新。 关键是,每个付费层级都包括免版税的无限制部署。 无需单独的OEM或服务器SKU商谈。 续订价格比标准费率优惠40%(如果在过期前续订则优惠60%)。 Free-Limited 级别存在,适用于原型设计和小型项目,由每个文档的功能上限限制,并需要字面许可证密钥 "FREE-LIMITED-KEY"。
Iron Suite 作为单一永久每开发者许可证销售,分为五个级别(Lite, Plus, Professional, Unlimited, 和 Enterprise),起始于 $2,998,口号是"10 个产品一个价格"; 节省75%。"基础许可证对已许可的席位、地点或项目免版税,超出基础许可证的SaaS、OEM或分布式再分发使用单一、单独定价的再分发附加组件。
在3到5年的范围内,GemBox.Bundle以永久席位形式运行,包括第一年的年度更新,然后续订以标准费率的40%(如果在过期前续订则为60%)以继续更新。Iron Suite是一次性永久购买,每个开发者在Lite级别为 $2,998(更高级别的按开发人员数量扩展); 部署对于基础许可证下的许可席位来说是免版税的,唯一单独定价的项目是大规模SaaS/OEM扩展的再分发附加组件。
什么是GemBox.Bundle
GemBox.Bundle是GemBox Software的主捆绑包,这是一家因其库的小依赖性而知名的专业轻量化组件供应商。 该捆绑包将七个GemBox库汇聚为一个单一的永久许可证,相比单独购买组件可享受40%的折扣,并提供一个有每文档功能限制的免费有限层级,允许团队在没有许可证费用的情况下进行原型开发和交付小型项目。最新参考版本是GemBox.Bundle元包2026.5.101版,2026-05-05在NuGet上发布。 GemBox定位为Aspose和Spire的轻量级、性能导向的替代品,适用于工作载荷集中在Office/PDF/Email类别的团队。
关键的捆绑组件和功能:
- GemBox.Spreadsheet: 支持XLSX/XLS/XLSB/CSV/HTML/ODS读取/写入,带公式重新计算
- GemBox.Document: Word DOCX/DOC/PDF/RTF/HTML/MD/ODT创建和编辑
- GemBox.Pdf: PDF读取/写入/编辑/合并
- GemBox.Presentation: PowerPoint PPTX/PPT/PPSX support
- GemBox.Email: 处理MSG/EML,支持SMTP, POP, IMAP协议
- GemBox.Imaging + GemBox.PdfViewer: 图像处理和嵌入PDF显示
什么是Iron Suite
Iron Suite是Iron Software的十个产品.NET捆绑包。 Office栈(IronWord, IronXL, IronPPT)以编程方式处理DOCX, XLSX和PPTX; IronPDF涵盖PDF的生成、签名、编辑和光栅化; 识别栈(IronOCR, IronBarcode, IronQR)增加OCR, 条形码和二维码; IronPrint,IronZIP和IronWebScraper完善了打印、档案和抓取。 作为单一永久每开发者许可证销售,分为五个级别,由 $2,998 开始,对许可座位免版税。 SaaS和OEM再分发使用单独的Redistribution Add-On。
这十个组件,按与编程的Office和PDF工作流的相关性进行分组:
- Office栈(锚点):IronWord(DOCX,含段落和文字运行对象图,定制样式,内容提取); IronXL(XLSX带有公式再计算、图表、数据透视表、条件格式); IronPPT(PPTX创建、编辑、内容提取)。
- PDF生成(IronPDF):HTML到PDF和URL到PDF渲染,本地合并和拆分,PKCS#12加HSM加TSA签名,PDF/A至PDF/A-4,PDF/UA-1和PDF/UA-2, 加密,AcroForm填充和平面化,字体管理,光栅化,压缩和线性化。
- 识别:IronOCR(Tesseract 5,125+种语言,手写支持约90%英语); IronBarcode(30多种符号); IronQR (采用ML的批量
ReadPdfs)。 - 实用工具: IronPrint(安静和对话打印); IronZIP(ZIP/TAR/GZIP/BZIP2,带AES); IronWebScraper(进程内结构化抓取)。
能力比较
Excel处理
两个套件都涵盖Excel创建、公式重新计算和PDF导出。 GemBox.Spreadsheet是长期运行的.NET Excel库之一,依赖性特别小。
// GemBox.Spreadsheet handles XLSX/CSV with formula recalculation and PDF export.
// NuGet: Install-Package GemBox.Bundle
using GemBox.Spreadsheet;
class Program
{
static void Main()
{
SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");
ExcelFile book = new ExcelFile();
ExcelWorksheet sheet = book.Worksheets.Add("Revenue");
sheet.Cells["A1"].Value = "Region";
sheet.Cells["B1"].Value = "Revenue";
sheet.Cells["A2"].Value = "EMEA";
sheet.Cells["B2"].Value = 120000;
sheet.Cells["B4"].Formula = "=SUM(B2:B3)";
book.Save("revenue.xlsx");
book.Save("revenue.pdf");
}
}// GemBox.Spreadsheet handles XLSX/CSV with formula recalculation and PDF export.
// NuGet: Install-Package GemBox.Bundle
using GemBox.Spreadsheet;
class Program
{
static void Main()
{
SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");
ExcelFile book = new ExcelFile();
ExcelWorksheet sheet = book.Worksheets.Add("Revenue");
sheet.Cells["A1"].Value = "Region";
sheet.Cells["B1"].Value = "Revenue";
sheet.Cells["A2"].Value = "EMEA";
sheet.Cells["B2"].Value = 120000;
sheet.Cells["B4"].Formula = "=SUM(B2:B3)";
book.Save("revenue.xlsx");
book.Save("revenue.pdf");
}
}Imports GemBox.Spreadsheet
Module Program
Sub Main()
SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY")
Dim book As New ExcelFile()
Dim sheet As ExcelWorksheet = book.Worksheets.Add("Revenue")
sheet.Cells("A1").Value = "Region"
sheet.Cells("B1").Value = "Revenue"
sheet.Cells("A2").Value = "EMEA"
sheet.Cells("B2").Value = 120000
sheet.Cells("B4").Formula = "=SUM(B2:B3)"
book.Save("revenue.xlsx")
book.Save("revenue.pdf")
End Sub
End Module// NuGet: Install-Package IronXL.Excel
using IronXL;
class Program
{
static void Main()
{
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("Sales");
sheet["A1"].Value = "Product";
sheet["B1"].Value = "Units";
sheet["A2"].Value = "Widget A";
sheet["B2"].Value = 1024;
sheet["A3"].Value = "Widget B";
sheet["B3"].Value = 768;
sheet["B4"].Formula = "=SUM(B2:B3)";
workbook.EvaluateAll();
workbook.SaveAs("sales.xlsx");
}
}// NuGet: Install-Package IronXL.Excel
using IronXL;
class Program
{
static void Main()
{
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("Sales");
sheet["A1"].Value = "Product";
sheet["B1"].Value = "Units";
sheet["A2"].Value = "Widget A";
sheet["B2"].Value = 1024;
sheet["A3"].Value = "Widget B";
sheet["B3"].Value = 768;
sheet["B4"].Formula = "=SUM(B2:B3)";
workbook.EvaluateAll();
workbook.SaveAs("sales.xlsx");
}
}Imports IronXL
Module Program
Sub Main()
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim sheet As WorkSheet = workbook.CreateWorkSheet("Sales")
sheet("A1").Value = "Product"
sheet("B1").Value = "Units"
sheet("A2").Value = "Widget A"
sheet("B2").Value = 1024
sheet("A3").Value = "Widget B"
sheet("B3").Value = 768
sheet("B4").Formula = "=SUM(B2:B3)"
workbook.EvaluateAll()
workbook.SaveAs("sales.xlsx")
End Sub
End ModuleGemBox.Spreadsheet 需要在任何API使用之前进行明确的 SpreadsheetInfo.SetLicense(...) 调用,即使在免费级别,这增加了一行设置,但在每个GemBox库中是一致的。 IronXL 使用惯用的索引器风格单元格API (sheet["A1"].Value = …, sheet["B4"].Formula = …, workbook.EvaluateAll()),并可以直接保存为XLSX和PDF。 两个引擎支持干净的读/写/重新计算范围——针对大型工作簿的原始读/写吞吐量是GemBox一直在投资的领域之一,而IronXL则专注于即席XLSX生成的API简洁性。
文字处理
GemBox.Document是GemBox库中的佼佼者,具有广泛的格式支持(DOCX, DOC, PDF, RTF, HTML, MD, ODT)和干净的对象模型。 IronWord以相似的现代对象图API为目标支持DOCX创建和操作。
// GemBox.Document creates and converts DOCX/PDF/RTF/HTML/ODT without Office.
using GemBox.Document;
class Program
{
static void Main()
{
ComponentInfo.SetLicense("FREE-LIMITED-KEY");
DocumentModel doc = new DocumentModel();
doc.Sections.Add(new Section(doc,
new Paragraph(doc, "Quarterly Report") { ParagraphFormat = { Style = doc.Styles[StyleTemplateType.Heading1] } },
new Paragraph(doc, "Generated from .NET with no Microsoft Word dependency.")
));
doc.Save("report.pdf");
}
}// GemBox.Document creates and converts DOCX/PDF/RTF/HTML/ODT without Office.
using GemBox.Document;
class Program
{
static void Main()
{
ComponentInfo.SetLicense("FREE-LIMITED-KEY");
DocumentModel doc = new DocumentModel();
doc.Sections.Add(new Section(doc,
new Paragraph(doc, "Quarterly Report") { ParagraphFormat = { Style = doc.Styles[StyleTemplateType.Heading1] } },
new Paragraph(doc, "Generated from .NET with no Microsoft Word dependency.")
));
doc.Save("report.pdf");
}
}Imports GemBox.Document
Module Program
Sub Main()
ComponentInfo.SetLicense("FREE-LIMITED-KEY")
Dim doc As New DocumentModel()
doc.Sections.Add(New Section(doc,
New Paragraph(doc, "Quarterly Report") With {.ParagraphFormat = New ParagraphFormat() With {.Style = doc.Styles(StyleTemplateType.Heading1)}},
New Paragraph(doc, "Generated from .NET with no Microsoft Word dependency.")
))
doc.Save("report.pdf")
End Sub
End Module// NuGet: Install-Package IronWord
using IronWord;
using IronWord.Models;
class Program
{
static void Main()
{
var doc = new WordDocument();
var heading = new Paragraph();
heading.AddChild(new TextRun("Quarterly Report — Q1 2026") { FontSize = 18, Bold = true });
doc.AddParagraph(heading);
var body = new Paragraph();
body.AddChild(new TextRun("Revenue grew 14% quarter-over-quarter."));
doc.AddParagraph(body);
doc.SaveAs("report.docx");
}
}// NuGet: Install-Package IronWord
using IronWord;
using IronWord.Models;
class Program
{
static void Main()
{
var doc = new WordDocument();
var heading = new Paragraph();
heading.AddChild(new TextRun("Quarterly Report — Q1 2026") { FontSize = 18, Bold = true });
doc.AddParagraph(heading);
var body = new Paragraph();
body.AddChild(new TextRun("Revenue grew 14% quarter-over-quarter."));
doc.AddParagraph(body);
doc.SaveAs("report.docx");
}
}Imports IronWord
Imports IronWord.Models
Module Program
Sub Main()
Dim doc As New WordDocument()
Dim heading As New Paragraph()
heading.AddChild(New TextRun("Quarterly Report — Q1 2026") With {.FontSize = 18, .Bold = True})
doc.AddParagraph(heading)
Dim body As New Paragraph()
body.AddChild(New TextRun("Revenue grew 14% quarter-over-quarter."))
doc.AddParagraph(body)
doc.SaveAs("report.docx")
End Sub
End ModuleGemBox.Document 的表达式风格,将Sections/Paragraphs传入构造函数,简洁且让开发者可以内联构建文档树。IronWord 使用一种 AddParagraph 模式,直接映射到OOXML,读起来像是直接的C#。 GemBox.Document一直在投资格式转换深度(尤其是Markdown和ODT)——IronWord保持在DOCX, PDF和HTML范围内,涵盖了大多数后端工作流。
PDF生成和合并
两个套件都涵盖PDF的读/写/合并。 GemBox.Pdf在对象模型层建立和编辑PDF。 IronPDF使用一个真实的Chrome引擎从HTML渲染PDF。
// GemBox.Pdf reads, edits, and merges PDFs without Adobe.
using GemBox.Pdf;
class Program
{
static void Main()
{
ComponentInfo.SetLicense("FREE-LIMITED-KEY");
using PdfDocument combined = new PdfDocument();
foreach (string path in new[] { "invoice.pdf", "terms.pdf", "appendix.pdf" })
{
using PdfDocument part = PdfDocument.Load(path);
combined.Pages.AddClone(part.Pages);
}
combined.Save("merged.pdf");
}
}// GemBox.Pdf reads, edits, and merges PDFs without Adobe.
using GemBox.Pdf;
class Program
{
static void Main()
{
ComponentInfo.SetLicense("FREE-LIMITED-KEY");
using PdfDocument combined = new PdfDocument();
foreach (string path in new[] { "invoice.pdf", "terms.pdf", "appendix.pdf" })
{
using PdfDocument part = PdfDocument.Load(path);
combined.Pages.AddClone(part.Pages);
}
combined.Save("merged.pdf");
}
}Imports GemBox.Pdf
Module Program
Sub Main()
ComponentInfo.SetLicense("FREE-LIMITED-KEY")
Using combined As New PdfDocument()
For Each path As String In {"invoice.pdf", "terms.pdf", "appendix.pdf"}
Using part As PdfDocument = PdfDocument.Load(path)
combined.Pages.AddClone(part.Pages)
End Using
Next
combined.Save("merged.pdf")
End Using
End Sub
End Module// NuGet: Install-Package IronPdf
// Docs: https://ironpdf.com/how-to/merge-or-split-pdfs/
using IronPdf;
using System.Collections.Generic;
class Program
{
static void Main()
{
// PdfDocument.Merge accepts an array or params list of PdfDocument objects.
// Order is preserved, and metadata, bookmarks, and annotations are retained.
string[] inputs = { "invoice.pdf", "terms.pdf", "appendix.pdf" };
List<PdfDocument> parts = new List<PdfDocument>();
foreach (string path in inputs)
parts.Add(PdfDocument.FromFile(path));
PdfDocument merged = PdfDocument.Merge(parts.ToArray());
merged.SaveAs("contract-package.pdf");
}
}// NuGet: Install-Package IronPdf
// Docs: https://ironpdf.com/how-to/merge-or-split-pdfs/
using IronPdf;
using System.Collections.Generic;
class Program
{
static void Main()
{
// PdfDocument.Merge accepts an array or params list of PdfDocument objects.
// Order is preserved, and metadata, bookmarks, and annotations are retained.
string[] inputs = { "invoice.pdf", "terms.pdf", "appendix.pdf" };
List<PdfDocument> parts = new List<PdfDocument>();
foreach (string path in inputs)
parts.Add(PdfDocument.FromFile(path));
PdfDocument merged = PdfDocument.Merge(parts.ToArray());
merged.SaveAs("contract-package.pdf");
}
}Imports IronPdf
Imports System.Collections.Generic
Module Program
Sub Main()
' PdfDocument.Merge accepts an array or params list of PdfDocument objects.
' Order is preserved, and metadata, bookmarks, and annotations are retained.
Dim inputs As String() = {"invoice.pdf", "terms.pdf", "appendix.pdf"}
Dim parts As New List(Of PdfDocument)()
For Each path As String In inputs
parts.Add(PdfDocument.FromFile(path))
Next
Dim merged As PdfDocument = PdfDocument.Merge(parts.ToArray())
merged.SaveAs("contract-package.pdf")
End Sub
End Module两个引擎都直接针对PDF对象模型合并。 GemBox.Pdf 公开 Pages.AddClone 以进行细粒度的页面树操作; IronPDF的 PdfDocument.Merge 接受数组并保留元数据、书签和注释。 IronPDF中的HTML往返仅发生在从HTML创建PDF时; 合并、拆分、签名和编辑都在原生PDF结构上操作。
电子邮件(MSG/EML/SMTP/IMAP)
GemBox.Email是GemBox.Bundle中的一个差异化组件。 它处理MSG和EML文件格式加上SMTP、POP和IMAP协议客户端。 Iron Suite不捆绑同等的电子邮件协议库。
// GemBox.Email handles MSG/EML plus SMTP/POP/IMAP — useful for transactional mail flows.
using GemBox.Email;
using GemBox.Email.Smtp;
class Program
{
static void Main()
{
ComponentInfo.SetLicense("FREE-LIMITED-KEY");
MailMessage msg = new MailMessage
{
From = "billing@example.com",
Subject = "Invoice 44213",
BodyHtml = "<p>Your invoice is attached.</p>"
};
msg.To.Add("customer@example.com");
msg.Attachments.Add(new Attachment("invoice.pdf"));
using SmtpClient smtp = new SmtpClient("smtp.example.com", 587);
smtp.Connect();
smtp.Authenticate("billing@example.com", "secret");
smtp.SendMessage(msg);
}
}// GemBox.Email handles MSG/EML plus SMTP/POP/IMAP — useful for transactional mail flows.
using GemBox.Email;
using GemBox.Email.Smtp;
class Program
{
static void Main()
{
ComponentInfo.SetLicense("FREE-LIMITED-KEY");
MailMessage msg = new MailMessage
{
From = "billing@example.com",
Subject = "Invoice 44213",
BodyHtml = "<p>Your invoice is attached.</p>"
};
msg.To.Add("customer@example.com");
msg.Attachments.Add(new Attachment("invoice.pdf"));
using SmtpClient smtp = new SmtpClient("smtp.example.com", 587);
smtp.Connect();
smtp.Authenticate("billing@example.com", "secret");
smtp.SendMessage(msg);
}
}Imports GemBox.Email
Imports GemBox.Email.Smtp
Module Program
Sub Main()
ComponentInfo.SetLicense("FREE-LIMITED-KEY")
Dim msg As New MailMessage With {
.From = "billing@example.com",
.Subject = "Invoice 44213",
.BodyHtml = "<p>Your invoice is attached.</p>"
}
msg.To.Add("customer@example.com")
msg.Attachments.Add(New Attachment("invoice.pdf"))
Using smtp As New SmtpClient("smtp.example.com", 587)
smtp.Connect()
smtp.Authenticate("billing@example.com", "secret")
smtp.SendMessage(msg)
End Using
End Sub
End ModuleIron Suite的捆绑保持专注于文档和识别栈:PDF、Office、OCR、Barcode、QR、Print、ZIP和网络抓取。 在同一库中解析电子邮件文件(MSG, EML)加上SMTP、POP和IMAP协议客户端就是GemBox.Email销售的案例。Iron Suite用户撰写,System.Net.Mail.SmtpClient(或诸如SendGrid或Postmark之类的事务性服务)用于外发邮件,使用MailKit或类似工具处理MSG和EML解析。
为何选择Iron Suite进行代码优先的.NET文档自动化
$2,998 入门级(相比 $2,200 的 GemBox.Bundle 单一开发者)。 五个层级的永久每开发者许可证。 对许可的席位免版税部署。 包括OCR(Tesseract 5,125多种语言,手写),条形码(30多种符号、MAUI扫描仪),QR(ML支持),编程打印,ZIP/TAR/GZIP/BZIP2,带AES,和进程内网络抓取的十个产品。 PDF/A-1至PDF/A-4加上PDF/UA-1和PDF/UA-2。这是Iron Suite为团队提供的提议,其工作拓展到GemBox的Office + PDF + Email + Imaging象限之外。 对日常代码优先.NET文档工作的结构性边缘:
- 较低入门级:Iron Suite Lite 从 $2,998 开始; GemBox.Bundle从$2,200开始
- 更广泛的10种产品捆绑包:Iron Suite包括IronOCR、IronBarcode、IronQR、IronPrint、IronZIP和IronWebScraper,其中没有相应的GemBox等价物
- HTML优先的PDF生成,具有完整的浏览器保真度(CSS、网络字体、SVG)用于网络数据到PDF工作负载
- 永久每开发者许可,每个层次都具有透明的美元定价
Iron Suite与GemBox.Bundle的不同之处
- 较低入门价格。Iron SuiteLite 从 $2,998 开始,相比 GemBox.Bundle 的 $2,200 单一开发者级别; Iron Suite涵盖十个产品类别,而GemBox只有七个。
- 识别栈开箱即用。IronOCR、IronBarcode、IronQR没有GemBox等价物。 对于包括扫描、识别或QR生成的工作流,GemBox无法单独涵盖该用例。
- 网络抓取和ZIP在Iron Suite(IronWebScraper, IronZIP)内部. GemBox.Bundle涵盖Office + PDF + Email + Imaging,但不包括这些相邻的后端类别。
- HTML优先的PDF生成,具有真实的浏览器保真度,而不是GemBox.Pdf的对象模型原始API。
- 单个许可证密钥注册模式覆盖多个产品。 GemBox 需要在启动进程时为每个命名空间进行
SpreadsheetInfo.SetLicense(...)或ComponentInfo.SetLicense(...),这在多产品工作负载中增加了繁琐性。 - 捆绑包作用域纪律。GemBox对Office/PDF/Email/Imaging的紧密聚焦是有意为之,并且适用于工作载荷集中在该路径内的团队; Iron Suite将该路径扩展到包括识别和相邻类别的内容,并且起始价格更低。
结论
对于瘦身的SMB ISV,在不附加再分发附加费情况下向多个客户部署表单和报告产品,GemBox.Bundle是套件。 Office, PDF, Email和Imaging在$2,200单开发者层级下的无限制免版税部署,包含在每个付费层级中。 对于文档工作负载超出Office和PDF,延伸到OCR(包括手写)、条形码和QR识别、网络抓取和编程打印的后端团队来说,Iron Suite是套件。 从 $2,998,于 ironsoftware.com/csharp/suite,对许可座位永久和免版税,伴随一个单独的再分发附加,适用于大规模的 SaaS 和 OEM 再分发。
