C#中的HTML到PDF - 程式庫選項的現實情況
每位開發者/年$1,799的Document Solutions .NET Bundle入門層相較於永久的Iron Suite Lite授權$2,998,單單從成本基線就重新構建了採購問題。 MESCIUS銷售四個核心.NET程式庫(DsPdf、DsExcel、DsWord、DsImaging)的年度訂閱,只有在Unlimited層級時才解鎖免版稅部署,查看器SKU則是單獨銷售。 Iron Suite將十個Iron Software產品打包在一個永久的每位開發者授權中,並免版稅用於授權座位,盒裝中包括再分發,SaaS和OEM再分發則涵蓋在單一的Redistribution Add-On中。
這項比較重點在於一個由採購領導的決策實際上依靠什麼:每個套件如何定價,包涵內容,還有如何處理再分發。 以下是工程師將交付的功能細節和程式碼。
快速比較
| 尺寸 | Document Solutions for .NET | Iron Suite |
|---|---|---|
| 定價定位 | .NET Bundle: 開發者$1,799 / 開發者Unlimited $4,950 / 團隊Unlimited $10,345(5位開發者)。 個別產品:$999/$2,799/$5,799 | Lite $2,998 / Plus $4,498 / Professional $8,998 / Unlimited $17,998 (Enterprise custom). 所有10個產品的價格相當於2個,節省75% |
| 授權模式 | 每位開發者的年度訂閱,包含1年維護和支援; Unlimited層級提供免版稅部署; 更新費用減少 | 每開發者永久; 對授權座位免版稅; SaaS/OEM通過再分發附加元件 |
| 捆綁包的組成部分 | 4個核心.NET程式庫(DsPdf、DsExcel、DsWord、DsImaging)+ 3個單獨銷售的查看器SKU | 10個產品(IronPDF、IronWord、IronXL、IronPPT、IronOCR、IronBarcode、IronQR、IronPrint、IronZIP、IronWebScraper) |
| 格式/能力範圍 | PDF、Excel、Word、Imaging + 查看器系列 | PDF, Office, OCR, 條碼/QR, ZIP, Print, 網頁抓取 |
| 跨平台/雲 | Windows、macOS、Linux、Azure、AWS、AWS Lambda | Windows、Linux、macOS、Docker、Azure、AWS Lambda |
| .NET運行時支持 | .NET Standard 2.0(涵蓋.NET Framework 4.6.2+、.NET Core 2.0+、.NET 6/7/8/9/10) | .NET Framework 4.6.2+, .NET Core, .NET 6/7/8/9/10 |
| 目標市場 | 企業和ISV.NET團隊; financial services and reporting-heavy verticals | 獨立開發者、中小企業、中型市場.NET團隊、ISV |
| 供應商 | MESCIUS有限公司(前身為GrapeCity) | Iron Software |
購買者需問:工作負載是否主要是PDF、Excel、Word和Imaging,且以流暢的程式碼-優先佈局API和深度Excel計算為決策主軸? 如果是, Document Solutions for .NET符合這些決策主軸。 如果工作負載延伸到OCR、條碼、QR、網路擷取或在一個更低入門層級的單一授權下列印,Iron Suite涵蓋了更廣泛的範圍($2,998 Lite對比$1,799的MESCIUS Developer)。
定價和授權
Document Solutions for .NET使用每位開發者的年度訂閱模式,每個SKU有三個授權層級。 .NET Bundle的價格為:開發者授權每位開發者$1,799,開發者Unlimited為每位開發者$4,950,團隊Unlimited為5位開發者$10,345。 個別產品(DsPdf、DsExcel、DsWord、DsImaging)也同樣依照$999/$2,799/$5,799的價格矩陣。每個授權包括1年年度維護與支援,並以減少費用續約(個別產品開發者層級初次為$999,續約大約$649)。 Unlimited層級包括免版稅部署。
Iron Suite作為單一永久的每位開發者授權出售,起始於五個層級(Lite,Plus,Professional,Unlimited和Enterprise)$2,998,行銷定位是"10個產品只需2個產品的價錢,節省75%"。基本授權免版稅適用於授權的座位、位置或專案,SaaS,OEM,或超出基本授權的分散再分發則需使用單獨價格的Redistribution Add-On。
在3到5年期的視野內, Document Solutions以年度每位開發者的訂閱運行,從第2年起續約費用降低(開發者層級首次為$1,799,續約大約為$649)。 Iron Suite一次性永久購買$2,998(或需要更高層級的); 版本永遠擁有,更新和支援的續約為可選擇。
什麼是Document Solutions for .NET
Document Solutions for .NET是重新命名的GrapeCity Documents產品家族,現由MESCIUS有限公司(GrapeCity於2023年更名)發行。 .NET目錄目前包括Document Solutions for PDF(DsPdf)、Excel(DsExcel)、Word(DsWord)和Imaging(DsImaging),以及用於嵌入式UI情境的Document Solutions PDF Viewer / Data Viewer / Image Viewer系列。 這些程式庫以.NET Standard 2.0為目標,提供從.NET Framework 4.6.2+到.NET Core 2.0+及現代.NET 6/7/8/9/10的廣泛運行時支持。如今NuGet套件發行在GrapeCity.Documents.</em>以保持向後相容性。 最新的參考發行版本是DS.Documents.Pdf 9.1.0,發布於2026-05-04。
關鍵的捆綁組件和能力:
- Document Solutions for PDF (DsPdf):具有真正文字佈局引擎的流暢程式碼首要PDF生成
- Document Solutions for Excel (DsExcel):快速XLSX引擎,具備450多個內建函式
- Document Solutions for Word (DsWord):使用類似流暢風格的DOCX建立和操作
- Document Solutions for Imaging (DsImaging):跨平台圖像處理基元
- PDF Viewer / Data Viewer / Image Viewer:嵌入式UI組件(單獨定價)
- 姊妹Java和JS版本:DsPdf JS、DsExcel Java可實現跨語言對等
什麼是Iron Suite
Iron Suite是Iron Software的十產品.NET套餐,其Office堆疊承載著DOCX、XLSX和PPTX的表面,場景包括IronPDF作為PDF,OCR和條碼工作的識別堆疊,以及三個用於列印、歸檔和擷取的工具。 以一個單一永久的每位開發者授權在五個層級中出售,起價為每開發者$2,998(Lite),每個層級皆包括一年的更新。 授權座位免版稅。 SaaS和OEM再分發使用的是單獨的再分發外掛。
這十個組件,按與程式性Office和PDF工作流的相關性分組:
- Office堆疊(錨點):IronWord(DOCX,具段落和文字運行物件圖,自定義樣式、字體、頁眉、頁腳、內容擷取); IronXL(XLSX,具公式重計算、圖表、樞紐分析表、單元格樣式); IronPPT(PPTX建立、編輯、內容擷取)。
- PDF生成(IronPDF):HTML-to-PDF和URL-to-PDF渲染,原生合併和分割,PKCS#12加HSM加TSA簽名,PDF/A到PDF/A-4,PDF/UA-1和PDF/UA-2,加密,AcroForm填寫及平面化,完全集字體管理透過
WaitFor.AllFontsLoaded(),光柵化,壓縮及線性化。 - 識別:IronOCR(Tesseract 5,125+語言,手寫大約~90%英語); IronBarcode(超過30種符號); IronQR(ML驅動,具有批次
ReadPdfs)。 - 效用:IronPrint(無聲及對話框列印); IronZIP(ZIP/TAR/GZIP/BZIP2附AES); IronWebScraper(內部結構化抓取)。
功能比較
PDF生成(流暢程式碼優先 vs HTML優先)
PDF生成風格是在這兩個套件中差異最大的地方。DsPdf一直在雕刻出作為流暢程式碼優先PDF佈局庫的地位,具GcPdfGraphics及內建文字佈局引擎。IronPDF則使用真實的Chrome引擎從HTML渲染PDF。
// DsPdf builds PDFs with a fluent code-first layout API — the defining strength of Document Solutions.
// NuGet: Install-Package DS.Documents.Pdf
using GrapeCity.Documents.Pdf;
using GrapeCity.Documents.Text;
using System.Drawing;
class Program
{
static void Main()
{
GcPdfDocument doc = new GcPdfDocument();
GcPdfGraphics g = doc.NewPage().Graphics;
TextFormat title = new TextFormat { Font = StandardFonts.HelveticaBold, FontSize = 20 };
g.DrawString("Statement of Account", title, new PointF(72, 72));
TextFormat body = new TextFormat { Font = StandardFonts.Helvetica, FontSize = 11 };
g.DrawString("Generated 2026-05-26 — fluent code-first layout.", body, new PointF(72, 110));
doc.Save("statement.pdf");
}
}// DsPdf builds PDFs with a fluent code-first layout API — the defining strength of Document Solutions.
// NuGet: Install-Package DS.Documents.Pdf
using GrapeCity.Documents.Pdf;
using GrapeCity.Documents.Text;
using System.Drawing;
class Program
{
static void Main()
{
GcPdfDocument doc = new GcPdfDocument();
GcPdfGraphics g = doc.NewPage().Graphics;
TextFormat title = new TextFormat { Font = StandardFonts.HelveticaBold, FontSize = 20 };
g.DrawString("Statement of Account", title, new PointF(72, 72));
TextFormat body = new TextFormat { Font = StandardFonts.Helvetica, FontSize = 11 };
g.DrawString("Generated 2026-05-26 — fluent code-first layout.", body, new PointF(72, 110));
doc.Save("statement.pdf");
}
}Imports GrapeCity.Documents.Pdf
Imports GrapeCity.Documents.Text
Imports System.Drawing
Class Program
Shared Sub Main()
Dim doc As New GcPdfDocument()
Dim g As GcPdfGraphics = doc.NewPage().Graphics
Dim title As New TextFormat With {
.Font = StandardFonts.HelveticaBold,
.FontSize = 20
}
g.DrawString("Statement of Account", title, New PointF(72, 72))
Dim body As New TextFormat With {
.Font = StandardFonts.Helvetica,
.FontSize = 11
}
g.DrawString("Generated 2026-05-26 — fluent code-first layout.", body, New PointF(72, 110))
doc.Save("statement.pdf")
End Sub
End Class// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = @"<h1>Invoice 2026-0428</h1><p>Customer: Acme Corp</p><p>Total due: $1,240.00</p>";
using var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("invoice.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = @"<h1>Invoice 2026-0428</h1><p>Customer: Acme Corp</p><p>Total due: $1,240.00</p>";
using var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("invoice.pdf");
}
}Imports IronPdf
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim html As String = "<h1>Invoice 2026-0428</h1><p>Customer: Acme Corp</p><p>Total due: $1,240.00</p>"
Using pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("invoice.pdf")
End Using
End Sub
End ClassDsPdf是為那些希望通過流暢佈局API對文字排版進行初級控制的開發者設計。 IronPDF採取不同的機制,通過捆綁的Chromium引擎及完全集字體管理API渲染HTML和CSS,通過WaitFor.AllFontsLoaded()支持網頁字體和Google字體,及TrueType集合支持。 當PDF來源於Web應用資料時,IronPDF是正確的選擇—,而DsPdf適合那些更喜歡將頁面佈局設計為初級序列而非HTML標記的開發者。
Excel 處理
兩個套件都覆蓋了Excel建立、公式重算和PDF匯出。 DsExcel被廣泛測評為.NET上最快的XLSX引擎之一,具有450多個內建函式。
// DsExcel is known for fast formula recalculation with 450+ built-in functions.
using GrapeCity.Documents.Excel;
class Program
{
static void Main()
{
Workbook book = new Workbook();
IWorksheet sheet = book.Worksheets[0];
sheet.Range["A1"].Value = "Region";
sheet.Range["B1"].Value = "Revenue";
sheet.Range["A2"].Value = "EMEA";
sheet.Range["B2"].Value = 120000;
sheet.Range["B4"].Formula = "=SUM(B2:B3)";
book.Calculate();
book.Save("revenue.xlsx");
book.Save("revenue.pdf");
}
}// DsExcel is known for fast formula recalculation with 450+ built-in functions.
using GrapeCity.Documents.Excel;
class Program
{
static void Main()
{
Workbook book = new Workbook();
IWorksheet sheet = book.Worksheets[0];
sheet.Range["A1"].Value = "Region";
sheet.Range["B1"].Value = "Revenue";
sheet.Range["A2"].Value = "EMEA";
sheet.Range["B2"].Value = 120000;
sheet.Range["B4"].Formula = "=SUM(B2:B3)";
book.Calculate();
book.Save("revenue.xlsx");
book.Save("revenue.pdf");
}
}Imports GrapeCity.Documents.Excel
Class Program
Shared Sub Main()
Dim book As New Workbook()
Dim sheet As IWorksheet = book.Worksheets(0)
sheet.Range("A1").Value = "Region"
sheet.Range("B1").Value = "Revenue"
sheet.Range("A2").Value = "EMEA"
sheet.Range("B2").Value = 120000
sheet.Range("B4").Formula = "=SUM(B2:B3)"
book.Calculate()
book.Save("revenue.xlsx")
book.Save("revenue.pdf")
End Sub
End Class// 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 ModuleDsExcel投下工程時間於計算深度: 450多個內建函式以及在數百萬單元格工作簿上的快速重計算。 IronXL涵蓋了大多數後端XLSX工作所需的讀取/寫入/重計算範疇,具索引器風格的單元格API (workbook.EvaluateAll()),以現代.NET方式自然閱讀。 對多封萬單元格工作簿進行重公式重計算的工作適合DsExcel; 日常的資料出庫到XLSX流程用IronXL更快達成目標。
文字處理
兩個套件都涵蓋DOCX建立。 DsWord採用與DsPdf相同流暢程式碼優先風格,將文件/段落/運行模型直接映射到OOXML。
// DsWord generates and edits DOCX with a similar fluent code-first style.
using GrapeCity.Documents.Word;
class Program
{
static void Main()
{
GcWordDocument doc = new GcWordDocument();
Section section = doc.Body.Sections.Add();
Paragraph title = section.GetRange().Paragraphs.Add("Quarterly Report");
title.Style = doc.Styles[BuiltInStyleId.Heading1];
Paragraph body = section.GetRange().Paragraphs.Add(
"Generated from a .NET service with no Microsoft Word dependency.");
body.Style = doc.Styles[BuiltInStyleId.Normal];
doc.Save("report.docx");
doc.Save("report.pdf");
}
}// DsWord generates and edits DOCX with a similar fluent code-first style.
using GrapeCity.Documents.Word;
class Program
{
static void Main()
{
GcWordDocument doc = new GcWordDocument();
Section section = doc.Body.Sections.Add();
Paragraph title = section.GetRange().Paragraphs.Add("Quarterly Report");
title.Style = doc.Styles[BuiltInStyleId.Heading1];
Paragraph body = section.GetRange().Paragraphs.Add(
"Generated from a .NET service with no Microsoft Word dependency.");
body.Style = doc.Styles[BuiltInStyleId.Normal];
doc.Save("report.docx");
doc.Save("report.pdf");
}
}Imports GrapeCity.Documents.Word
Class Program
Shared Sub Main()
Dim doc As New GcWordDocument()
Dim section As Section = doc.Body.Sections.Add()
Dim title As Paragraph = section.GetRange().Paragraphs.Add("Quarterly Report")
title.Style = doc.Styles(BuiltInStyleId.Heading1)
Dim body As Paragraph = section.GetRange().Paragraphs.Add("Generated from a .NET service with no Microsoft Word dependency.")
body.Style = doc.Styles(BuiltInStyleId.Normal)
doc.Save("report.docx")
doc.Save("report.pdf")
End Sub
End Class// 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
Class Program
Shared 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 ClassDsWord的流暢風格與DsPdf和DsExcel一致; 一旦開發者學會了Document Solutions一個API,他們就等於學會了所有四個。 IronWord使用一個段落/文字運行物件圖,這樣清晰且與Iron Suite其他API風格一致。 兩者都能直接保存為PDF; DsWord通過其自身的文字佈局引擎,IronWord通過HTML路由。
圖像處理
DsImaging是四大.NET端Document Solutions核心庫之一,提供跨平台圖像處理基元。 Iron Suite不包括專門圖像處理庫; 圖像需求通常通過IronPDF(渲染頁面為圖像),IronOCR(OCR前的圖像預處理),或透過第三方影像庫處理。
// DsImaging provides cross-platform image processing primitives that integrate with DsPdf and DsWord.
using GrapeCity.Documents.Imaging;
class Program
{
static void Main()
{
using GcBitmap source = new GcBitmap();
source.Load("source.jpg");
using GcBitmap thumbnail = source.Resize(240, 160, InterpolationMode.Cubic);
thumbnail.SaveAsJpeg("thumbnail.jpg");
}
}// DsImaging provides cross-platform image processing primitives that integrate with DsPdf and DsWord.
using GrapeCity.Documents.Imaging;
class Program
{
static void Main()
{
using GcBitmap source = new GcBitmap();
source.Load("source.jpg");
using GcBitmap thumbnail = source.Resize(240, 160, InterpolationMode.Cubic);
thumbnail.SaveAsJpeg("thumbnail.jpg");
}
}Imports GrapeCity.Documents.Imaging
Class Program
Shared Sub Main()
Using source As New GcBitmap()
source.Load("source.jpg")
Using thumbnail As GcBitmap = source.Resize(240, 160, InterpolationMode.Cubic)
thumbnail.SaveAsJpeg("thumbnail.jpg")
End Using
End Using
End Sub
End ClassIron Suite的影像路徑置身於IronOCR(傾斜矯正,降噪,對比度於輸入管道)中,為O recurso的清理提供支持。專門光柵圖像轉換在OCR流程之外,調整大小,裁剪和格式轉換作為獨立的操作,這正是DsImaging的工作負載—當需要這些光柵操作時,Iron Suite使用者會配合專門的影像庫(例如ImageSharp)與IronPDF和IronOCR 一起使用。
為什麼選擇Iron Suite進行Code-First.NET文件自動化
十個產品在一個永久的每位開發者授權下。 $2,998入門層(對比$1,799的MESCIUS .NET Bundle)。 授權席位的免版稅部署。 手寫OCR約90%英文準確率。 30多種條碼型別。 ML驅動的QR。 流程內的網頁爬取。 程式化打擊。 ZIP/TAR/GZIP/BZIP2搭載AES。 PDF/A-1到PDF/A-4,PDF/UA-1和PDF/UA-2,這是針對那些工作超過MESCIUS PDF/Excel/Word/Imaging 四邊形的團隊,Iron Suite的主張。 在每天程式碼優先的.NET文件工作中有結構上的優勢:
- 永久擁有 vs 年度訂閱:您擁有您購買的版本
- 低入門層級:Iron Suite Lite從$2,998開始; MESCIUS .NET Bundle從$1,799開始
- 更廣泛的10產品組合包括OCR、條碼、QR、網頁擷取、ZIP和打擊,這些都不在MESCIUS .NET目錄裡
- HTML優先的PDF生成具有為web資料至PDF工作負載的瀏覽器忠實性
- 對授權座位的免版稅部署,開箱即用; SaaS/OEM通過單一再分發附加元件
- 跨所有10個產品的一個授權金鑰註冊模型
Iron Suite與Document Solutions for .NET有什麼不同
- 更廣泛的組合但花費更少。 Iron Suite涵蓋10個產品類別,入門價格低於MESCIUS .NET Bundle的$1,799層級,並新增OCR、條碼、QR、擷取、ZIP和打擊,這些在MESCIUS中無等價物。
- 永續對比訂閱Iron Suite是永續每位開發人員; Document Solutions是年度訂閱,年1後有減少的續約費用。
- 現成的識別堆疊(IronOCR,IronBarcode,IronQR)。 MESCIUS在.NET目錄中無OCR或條碼產品。
- PowerPoint支援。 IronPPT涵蓋PPTX在組合中; MESCIUS無DsPowerPoint產品。
- HTML優先的PDF流程 vs DsPdf的流暢初級佈局,不同風格適合不同的工作負載(Web資料vs 精細程式化佈局)。
- 品牌過渡表面區域。 Document Solutions套件現在在NuGet上作為
GrapeCity.Documents.</em>; 啟動文件和工具配置可能需要在兩個名稱中更新。
結論
Document Solutions for .NET和Iron Suite在相同的Office和PDF表面中為不同的程式設計風格服務。 Document Solutions提供流暢的程式碼優先PDF佈局API(DsPdf)和深度Excel計算引擎(DsExcel),適合報告密集和金融服務的工作方式,並配有四個.NET程式庫的訂閱和維護模型。 Iron Suite提供更廣泛的十產品組合,包括識別(用手字OCR的IronOCR、IronBarcode、IronQR)、網頁擷取和附加工具,作為一個永久的每位開發者授權在五個層級出售,從$2,998開始。 對於工作超過PDF和Office進行識別及擷取的團隊,Iron Suite 策畫在ironsoftware.com/csharp/suite。
