Iron Suite for .NET
10個 .NET 程式庫。一個完整的文件套件。
Apache PDFBox與IronPDF:技術比較指南
當.NET開發人員評估企業級PDF解決方案時,Foxit SDK憑藉其可靠的文件處理功能脫穎而出。 然而,其複雜的授權系統、手動安裝要求以及冗長的API模式讓許多團隊考慮其他替代方案。 IronPDF提供了現代化的方法,簡單的NuGet安裝,內建HTML到PDF轉換,專為.NET開發人員設計的API模式。
本比較檢視這些程式庫在技術相關維度上的表現,以幫助專業開發者和架構師為他們的 .NET PDF 需求做出明智的決定。
了解Foxit SDK
Foxit SDK是一個企業級PDF程式庫,設計用於完整的C#文件處理。 該程式庫提供了強大的PDF建立、編輯和管理功能,適合需要詳細自訂和高級操作的大規模應用。
Foxit SDK使用HTML2PDFSettingData進行HTML轉換,需要明確配置頁面尺寸、頁面模式和其他設置。 浮水印使用獨立的WatermarkSettings類別,帶有字體定義和定位參數。
該程式庫需要手動的DLL引用或私人NuGet源,沒有簡單的公共NuGet包可用。 HTML到PDF轉換需要單獨購買附加組件,API模式反映了C++的起源,在現代C#開發中感覺不太自然。
了解IronPDF
IronPDF是一個.NET PDF程式庫,使用Chromium渲染引擎進行HTML到PDF轉換,提供對現代網頁標準的內建支持。 該程式庫提供了簡單的NuGet安裝和專為.NET開發人員設計的API模式。
IronPDF使用RenderUrlAsPdf()等直觀的方法。 浮水印使用TextStamper,具有簡單明瞭的屬性來控制文字、字體大小、不透明度、旋轉和對齊。 該程式庫支持標準.NET模式,包括IDisposable進行自動資源清理和基於例外的錯誤處理。
架構和 API 設計比較
這些.NET PDF程式庫之間的根本區別在於它們的API理念和安裝方法。
| 方面 | Foxit SDK | IronPDF |
|---|---|---|
| 安裝 | 手動DLLs/私人來源 | 簡單的 NuGet 套件 |
| 授權 | 複雜,重點面向企業 | 透明,所有尺寸 |
| 初始化 | Library.Initialize(sn, key) + Library.Release() | 僅需一次設置授權金鑰 |
| 錯誤處理 | ErrorCode枚舉 | 標準.NET例外 |
| HTML到PDF | 單獨附加組件 | 內建Chromium |
| API風格 | C++遺產,冗長 | 現代.NET模式 |
| 資源清理 | 手動Release() | IDisposable/自動 |
| 文件 | 企業文件 | 公共教程 |
Foxit SDK的複雜授權系統包含多個產品、SKU和多種型別的授權(每開發人員、每伺服器、OEM等),使得選擇合適的選項困難。 企業導向的定價對於較小的團隊來說可能是禁止的。 IronPDF提供透明的授權,適合各種規模的企業。
程式碼比較:常見的 PDF 操作
HTML 到 PDF 轉換
最基本的操作顯示出API的複雜性差異。
Foxit SDK:
// NuGet: Install-Package Foxit.SDK
using Foxit.SDK;
using Foxit.SDK.Common;
using Foxit.SDK.PDFConversion;
using System;
class Program
{
static void Main()
{
Library.Initialize("sn", "key");
HTML2PDFSettingData settingData = new HTML2PDFSettingData();
settingData.page_width = 612.0f;
settingData.page_height = 792.0f;
settingData.page_mode = HTML2PDFPageMode.e_HTML2PDFPageModeSinglePage;
using (HTML2PDF html2pdf = new HTML2PDF(settingData))
{
html2pdf.Convert("<html><body><h1>Hello World</h1></body></html>", "output.pdf");
}
Library.Release();
}
}' NuGet: Install-Package Foxit.SDK
Imports Foxit.SDK
Imports Foxit.SDK.Common
Imports Foxit.SDK.PDFConversion
Imports System
Module Program
Sub Main()
Library.Initialize("sn", "key")
Dim settingData As New HTML2PDFSettingData()
settingData.page_width = 612.0F
settingData.page_height = 792.0F
settingData.page_mode = HTML2PDFPageMode.e_HTML2PDFPageModeSinglePage
Using html2pdf As New HTML2PDF(settingData)
html2pdf.Convert("<html><body><h1>Hello World</h1></body></html>", "output.pdf")
End Using
Library.Release()
End Sub
End ModuleIronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>");
pdf.SaveAs("output.pdf");
}
}Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>")
pdf.SaveAs("output.pdf")
End Sub
End ClassFoxit SDK需要Library.Release()。 整個工作流程涉及多個配置物件和生命周期管理調用。
IronPDF建立一個SaveAs()保存,僅需三行程式碼且無需初始化或清理儀式。
想了解進階HTML渲染選項,請參閱HTML到PDF轉換指南。
URL到PDF轉換
轉換網頁為PDF也遵循類似的模式。
Foxit SDK:
// NuGet: Install-Package Foxit.SDK
using Foxit.SDK;
using Foxit.SDK.Common;
using Foxit.SDK.PDFConversion;
using System;
class Program
{
static void Main()
{
Library.Initialize("sn", "key");
HTML2PDFSettingData settingData = new HTML2PDFSettingData();
settingData.page_width = 612.0f;
settingData.page_height = 792.0f;
settingData.page_mode = HTML2PDFPageMode.e_HTML2PDFPageModeSinglePage;
using (HTML2PDF html2pdf = new HTML2PDF(settingData))
{
html2pdf.ConvertFromURL("https://www.example.com", "output.pdf");
}
Library.Release();
}
}' NuGet: Install-Package Foxit.SDK
Imports Foxit.SDK
Imports Foxit.SDK.Common
Imports Foxit.SDK.PDFConversion
Imports System
Module Program
Sub Main()
Library.Initialize("sn", "key")
Dim settingData As New HTML2PDFSettingData()
settingData.page_width = 612.0F
settingData.page_height = 792.0F
settingData.page_mode = HTML2PDFPageMode.e_HTML2PDFPageModeSinglePage
Using html2pdf As New HTML2PDF(settingData)
html2pdf.ConvertFromURL("https://www.example.com", "output.pdf")
End Using
Library.Release()
End Sub
End ModuleIronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("output.pdf");
}
}Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
pdf.SaveAs("output.pdf")
End Sub
End ClassFoxit SDK在ConvertFromURL()類別中使用相同的初始化/配置/清理模式。 IronPDF使用RenderUrlAsPdf()直接輸出文件保存。
了解更多關於URL渲染的資訊,請參閱URL到PDF文件。
新增浮水印
浮水印演示了物件模型的複雜性差異。
Foxit SDK:
// NuGet: Install-Package Foxit.SDK
using Foxit.SDK;
using Foxit.SDK.Common;
using Foxit.SDK.PDFDoc;
using System;
class Program
{
static void Main()
{
Library.Initialize("sn", "key");
using (PDFDoc doc = new PDFDoc("input.pdf"))
{
doc.Load("");
Watermark watermark = new Watermark(doc, "Confidential",
new Font(Font.StandardID.e_StdIDHelvetica), 48.0f, 0xFF0000FF);
WatermarkSettings settings = new WatermarkSettings();
settings.flags = Watermark.e_WatermarkFlagASPageContents;
settings.position = Watermark.Position.e_PosCenter;
settings.rotation = -45.0f;
settings.opacity = 0.5f;
watermark.SetSettings(settings);
watermark.InsertToAllPages();
doc.SaveAs("output.pdf", PDFDoc.SaveFlags.e_SaveFlagNoOriginal);
}
Library.Release();
}
}' NuGet: Install-Package Foxit.SDK
Imports Foxit.SDK
Imports Foxit.SDK.Common
Imports Foxit.SDK.PDFDoc
Imports System
Class Program
Shared Sub Main()
Library.Initialize("sn", "key")
Using doc As New PDFDoc("input.pdf")
doc.Load("")
Dim watermark As New Watermark(doc, "Confidential",
New Font(Font.StandardID.e_StdIDHelvetica), 48.0F, &HFF0000FF)
Dim settings As New WatermarkSettings()
settings.flags = Watermark.e_WatermarkFlagASPageContents
settings.position = Watermark.Position.e_PosCenter
settings.rotation = -45.0F
settings.opacity = 0.5F
watermark.SetSettings(settings)
watermark.InsertToAllPages()
doc.SaveAs("output.pdf", PDFDoc.SaveFlags.e_SaveFlagNoOriginal)
End Using
Library.Release()
End Sub
End ClassIronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
using System;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("input.pdf");
pdf.ApplyWatermark(new TextStamper()
{
Text = "Confidential",
FontSize = 48,
Opacity = 50,
Rotation = -45,
VerticalAlignment = VerticalAlignment.Middle,
HorizontalAlignment = HorizontalAlignment.Center
});
pdf.SaveAs("output.pdf");
}
}Imports IronPdf
Imports IronPdf.Editing
Imports System
Class Program
Shared Sub Main()
Dim pdf = PdfDocument.FromFile("input.pdf")
pdf.ApplyWatermark(New TextStamper() With {
.Text = "Confidential",
.FontSize = 48,
.Opacity = 50,
.Rotation = -45,
.VerticalAlignment = VerticalAlignment.Middle,
.HorizontalAlignment = HorizontalAlignment.Center
})
pdf.SaveAs("output.pdf")
End Sub
End ClassFoxit SDK要求:
1.用憑證Library.Initialize()
2. 建立doc.Load("")
3. 建立一個Font.StandardID.e_StdIDHelvetica)、大小和顏色
4. 建立opacity
5. 呼叫watermark.InsertToAllPages()
6. 使用PDFDoc.SaveFlags.e_SaveFlagNoOriginal
7. 使用Library.Release()進行清理
IronPDF使用HorizontalAlignment。 枚舉值(Watermark.Position.e_PosCenter語法具有自解釋性。
API映射參考
對於評估Foxit SDK遷移或比較能力的開發人員,這張對應圖展示了等效操作:
核心類映射
| Foxit SDK | IronPDF |
|---|---|
Library.Initialize(sn, key) | IronPdf.License.LicenseKey = "key" |
Library.Release() | 不適用 |
PDFDoc | PdfDocument |
PDFDoc.Load("") | 自動 |
doc.SaveAs(path, flags) | pdf.SaveAs(path) |
doc.Close() | pdf.Dispose()或使用 |
HTML2PDF | ChromePdfRenderer |
HTML2PDFSettingData | RenderingOptions |
html2pdf.Convert(html, path) | renderer.RenderHtmlAsPdf(html) |
html2pdf.ConvertFromURL(url, path) | renderer.RenderUrlAsPdf(url) |
[Watermark + WatermarkSettings] | TextStamper |
Font(Font.StandardID.e_StdIDHelvetica) | 戳記上的屬性 |
配置映射
| Foxit SDK | IronPDF |
|---|---|
settingData.page_width = 612.0f | RenderingOptions.PaperSize |
settingData.page_height = 792.0f | RenderingOptions.SetCustomPaperSize() |
settingData.page_mode | 預設為多頁 |
| 點(72每英寸) | 毫米 |
浮水印設置對應
| Foxit SDK | IronPDF |
|---|---|
Watermark.Position.e_PosCenter | VerticalAlignment.Middle + HorizontalAlignment.Center |
settings.rotation = -45.0f | Rotation = -45 |
settings.opacity = 0.5f | Opacity = 50 |
settings.flags | 不適用 |
watermark.InsertToAllPages() | 自動 |
功能比較總結
| 功能 | Foxit SDK | IronPDF |
|---|---|---|
| HTML到PDF | 是 (單獨加購) | 是(內建) |
| URL到PDF | 是 | 是 |
| 浮水印 | 是 | 是 |
| 簡單的NuGet安裝 | 是(大型包) | 是 |
| 需要初始化 | 是(Library.Initialize) | 否(僅設置一次金鑰) |
| 需要清理 | 是(Library.Release) | 否(自動) |
| ErrorCode處理 | 是 | 否(使用例外) |
| IDisposable模式 | 部分支持 | 是 |
| 點數單位系統 | 是 | 否(使用毫米) |
當團隊考慮從Foxit SDK轉移到IronPDF
開發團隊評估從Foxit SDK轉移到IronPDF的原因有很多:
**複雜的授權系統:**Foxit SDK提供多個產品、SKU和各種型別的授權(每開發人員、每伺服器、OEM等),使得選擇合適的選擇變得困難。 企業導向的定價對於較小的團隊來說可能是禁止的。
**手動安裝要求:**Foxit SDK需要手動DLL引用或私人NuGet源,沒有簡單的公共NuGet包。 這增加了初始設置和持續依賴管理的摩擦。
**冗長的API模式:**需要Library.Release()清理,增加了每個PDF操作的樣板。 ErrorCode枚舉檢查而非標準例外進一步增加了程式碼的複雜性。
**單獨的HTML附加:**HTML到PDF轉換需要Foxit SDK的額外附加組件購買。 IronPDF包含完整的HTML/CSS/JavaScript支援,內建于其Chromium引擎中,無需額外費用。
**C++遺產:**Foxit SDK的API模式反映了C++的起源,帶有PDFDoc.SaveFlags.e_SaveFlagNoOriginal等冗長的枚舉名。 這些模式在現代C#開發中感覺不太自然。
**配置複雜性:**設置需要詳細的物件配置(例如,RenderingOptions進行比較。
優勢和考量
Foxit SDK的優勢
- **企業功能:**廣泛的功能集適合大型企業需求
- **詳細的自訂:**對PDF操作的精細控制
- **成熟的平台:**PDF技術中的悠久存在
Foxit SDK的考量
- **複雜的授權:**多個產品和授權型別需要導航
- **企業定價:**專為大型組織量身定制,可能對較小的團隊來說是禁止的
- **手動安裝:**沒有簡單的公共NuGet包
- **冗長的API:**C++遺產導致更多樣板程式碼
- **單獨的HTML附加包:**HTML轉換需要額外購買
- **初始化儀式:**需要
Library.Release()
###IronPDF的優勢
- **簡便安裝:**標準NuGet包——
dotnet add package IronPdf - **現代.NET模式:**IDisposable,例外,直觀的屬性名
- **內建HTML轉換:**包含Chromium引擎,無需附加組件
- **透明授權:**適合各種規模的企業
- **減少樣板:**無需初始化/清理儀式
- 全面的資源: 豐富的教程和文件
IronPDF考量
- **不同的單位系統:**使用毫米而非點(轉換:點×0.353=毫米)
- **商業許可證:**生產使用需要許可
單位轉換參考
從Foxit SDK基於點的測量轉移到IronPDF的毫米系統時:
| 點 | 毫米 | 通用用法 |
|---|---|---|
| 72 | 25.4 | 1英寸 |
| 612 | 216 | 信紙寬 |
| 792 | 279 | 信紙高 |
公式:millimeters = points × 0.353
Foxit SDK和IronPDF都為.NET開發人員提供全面的PDF功能,但它們代表著不同的API設計和開發者體驗。 Foxit SDK提供廣泛的企業功能與詳細的自訂,但其複雜的授權、手動安裝、冗長的API模式和C++遺產增加了開發工作流程的摩擦。
IronPDF提供了一個現代的替代方案,簡單的NuGet安裝,通過Chromium進行的內建HTML到PDF轉換,標準.NET模式(IDisposable,例外)和透明的授權。 減少的樣板——無需Library.Release()調用——加速了開發並簡化了維護。
隨著組織計劃.NET 10、C# 14,並持續到2026年的應用開發,API設計和開發者體驗愈加重要。 尋求減少複雜性、更快開發和現代.NET模式的團隊會發現IronPDF能有效解決這些首要問題。
從 免費試用 開始評估 IronPDF,並探索全面的文件以評估特定需求的適用性。