Iron Suite for .NET
10個 .NET 程式庫。一個完整的文件套件。
GdPicture.NET SDK與IronPDF:技術比較指南
當.NET開發者尋找PDF生成程式庫時,他們有時會遇到PDF Duo .NET-一個在生態系統中沒有被廣泛認識的選擇。 此比較評估了PDF Duo和IronPDF,分析程式庫的可行性、文件質量、功能完整性和長期可維護性,以協助開發者和設計師做出明智的PDF工作流程決策。
什麼是PDF Duo?
PDF Duo .NET是一個用於在.NET應用中將HTML和其他格式轉換為PDF的程式庫。 它提供了HTML到PDF轉換的PdfMerger類別。
然而,PDF Duo .NET存在嚴重的挑戰,影響其實際可用性。 該程式庫的文件有限,社群參與度稀少,且對於持續支持和維護沒有明確的承諾。 與成熟的程式庫不同,PDF Duo的來源不明-沒有可見的GitHub版本庫,NuGet下載統計有限,授權條款不明確。
該程式庫的支持論壇活動甚少(有的帖子可追溯至2019年),且沒有官方API參考或完整的教學資源可用。 這些因素對於任何生產級應用都是巨大的風險。
什麼是 IronPDF?
IronPDF是一個完整的.NET PDF程式庫,由Iron Software積極開發和維護。 ChromePdfRenderer類別使用現代的Chromium渲染引擎將HTML、CSS和JavaScript轉換成高質量的PDF文件。
擁有超過4100萬NuGet下載量,IronPDF在生產環境中經過驗證。 該程式庫提供了廣泛的文件、專業的支持和定期更新,以確保與當前.NET版本的相容性。
除了基本的轉換外,IronPDF還提供PDF Duo無法提供的功能:帶有頁碼的頁眉和頁腳、浮水印、密碼保護、文字擷取和PDF到影像轉換。
程式庫可行性比較
PDF Duo和IronPDF的根本區別在於程式庫的成熟度和支持基礎設施。
| 方面 | PDF Duo .NET | IronPDF |
|---|---|---|
| 維護 | 未知/非活躍 | 積極開發中 |
| 文件 | 幾乎不存在 | 周詳 |
| 支持 | None | 專業支持團隊 |
| 社群 | ~0使用者 | 超過4100萬NuGet下載 |
| 渲染引擎 | 未知 | 現代Chromium |
| 功能 | 基本 | 功能全面 |
| 穩定性 | 未知 | 經過生產驗證 |
| 授權 | 不明 | Transparent |
對於需要可靠PDF生成的任何應用來說,PDF Duo的不確定狀態創造了重大專案風險。 使用維護不善的程式庫構建的應用可能面臨若相依性無法獲得更新或出現問題時缺乏支持資源的潛在問題。
HTML到PDF轉換
兩個程式庫都處理基本的HTML到PDF轉換,儘管它們有著不同的API模式和返回型別。
PDF Duo HTML到PDF方法:
// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>";
converter.ConvertHtmlString(htmlContent, "output.pdf");
Console.WriteLine("PDF created successfully!");
}
}Imports PDFDuo
Imports System
Module Program
Sub Main()
Dim converter As New HtmlToPdfConverter()
Dim htmlContent As String = "<h1>Hello World</h1><p>This is a PDF document.</p>"
converter.ConvertHtmlString(htmlContent, "output.pdf")
Console.WriteLine("PDF created successfully!")
End Sub
End ModuleImports PDFDuo
Imports System
Module Program
Sub Main()
Dim converter As New HtmlToPdfConverter()
Dim htmlContent As String = "<h1>Hello World</h1><p>This is a PDF document.</p>"
converter.ConvertHtmlString(htmlContent, "output.pdf")
Console.WriteLine("PDF created successfully!")
End Sub
End ModuleIronPDF的HTML轉PDF方法:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully!");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully!");
}
}Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>"
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF created successfully!")
End Sub
End ClassImports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>"
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF created successfully!")
End Sub
End ClassPDF Duo的ConvertHtmlString()方法接受HTML內容和輸出路徑,直接保存到檔案系統。 IronPDF的PdfDocument物件,允許在保存前進行進一步的操作。
IronPDF中的HTML到PDF轉換方法提供了可鏈式調用的API,您可以在呼叫PdfDocument中擷取文字。
URL 轉 PDF
將網頁轉換為PDF文件的過程在每個程式庫中遵循類似的模式。
PDF Duo URL到PDF方法:
// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
converter.ConvertUrl("https://www.example.com", "webpage.pdf");
Console.WriteLine("Webpage converted to PDF!");
}
}// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
converter.ConvertUrl("https://www.example.com", "webpage.pdf");
Console.WriteLine("Webpage converted to PDF!");
}
}Imports PDFDuo
Imports System
Module Program
Sub Main()
Dim converter As New HtmlToPdfConverter()
converter.ConvertUrl("https://www.example.com", "webpage.pdf")
Console.WriteLine("Webpage converted to PDF!")
End Sub
End ModuleImports PDFDuo
Imports System
Module Program
Sub Main()
Dim converter As New HtmlToPdfConverter()
converter.ConvertUrl("https://www.example.com", "webpage.pdf")
Console.WriteLine("Webpage converted to PDF!")
End Sub
End ModuleIronPDF URL到PDF方法:
// 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("webpage.pdf");
Console.WriteLine("Webpage converted to PDF!");
}
}// 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("webpage.pdf");
Console.WriteLine("Webpage converted to PDF!");
}
}Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
pdf.SaveAs("webpage.pdf")
Console.WriteLine("Webpage converted to PDF!")
End Sub
End ClassImports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
pdf.SaveAs("webpage.pdf")
Console.WriteLine("Webpage converted to PDF!")
End Sub
End Class兩個程式庫使用各自的轉換器/渲染器處理URL轉換。 IronPDF的RenderUrlAsPdf方法返回一個PdfDocument物件,為保存前的額外操作提供靈活性。
關鍵區別在於渲染質量。 PDF Duo的底層渲染引擎未知,使得CSS和JavaScript的支持不可預測。 IronPDF的Chromium引擎提供現代網頁標準支持,包括CSS3、Flexbox、Grid和JavaScript執行。
PDF合併
文件合併展示了程式庫之間不同的架構方法。
PDF Duo合併方法:
// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;
class Program
{
static void Main()
{
var merger = new PdfMerger();
merger.AddFile("document1.pdf");
merger.AddFile("document2.pdf");
merger.Merge("merged.pdf");
Console.WriteLine("PDFs merged successfully!");
}
}// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;
class Program
{
static void Main()
{
var merger = new PdfMerger();
merger.AddFile("document1.pdf");
merger.AddFile("document2.pdf");
merger.Merge("merged.pdf");
Console.WriteLine("PDFs merged successfully!");
}
}Imports PDFDuo
Imports System
Class Program
Shared Sub Main()
Dim merger As New PdfMerger()
merger.AddFile("document1.pdf")
merger.AddFile("document2.pdf")
merger.Merge("merged.pdf")
Console.WriteLine("PDFs merged successfully!")
End Sub
End ClassImports PDFDuo
Imports System
Class Program
Shared Sub Main()
Dim merger As New PdfMerger()
merger.AddFile("document1.pdf")
merger.AddFile("document2.pdf")
merger.Merge("merged.pdf")
Console.WriteLine("PDFs merged successfully!")
End Sub
End ClassIronPDF合併方法:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
Console.WriteLine("PDFs merged successfully!");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
Console.WriteLine("PDFs merged successfully!");
}
}Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim pdf1 = PdfDocument.FromFile("document1.pdf")
Dim pdf2 = PdfDocument.FromFile("document2.pdf")
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
Console.WriteLine("PDFs merged successfully!")
End Sub
End ClassImports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim pdf1 = PdfDocument.FromFile("document1.pdf")
Dim pdf2 = PdfDocument.FromFile("document2.pdf")
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
Console.WriteLine("PDFs merged successfully!")
End Sub
End ClassPDF Duo使用專用的Merge()。 IronPDF使用靜態PdfDocument物件。
IronPDF中的PDF合併功能提供了額外的靈活性——由於文件首先作為物件載入,您可以在合併前進行操作(新增浮水印、修改頁面)。
API映射參考
對於考慮從PDF Duo轉移到IronPDF的團隊,了解API映射有助於估算工時。
核心類別映射
| PDF Duo .NET | IronPDF |
|---|---|
new HtmlToPdfConverter() | new ChromePdfRenderer() |
converter.ConvertHtmlString(html, path) | renderer.RenderHtmlAsPdf(html).SaveAs(path) |
converter.ConvertUrl(url, path) | renderer.RenderUrlAsPdf(url).SaveAs(path) |
converter.ConvertFile(file, path) | renderer.RenderHtmlFileAsPdf(file).SaveAs(path) |
new PdfMerger() | PdfDocument.Merge() |
merger.AddFile(path) | PdfDocument.FromFile(path) |
merger.Merge(output) | merged.SaveAs(output) |
配置對映
| PDF Duo .NET | IronPDF |
|---|---|
converter.PageWidth = ... | renderer.RenderingOptions.PaperSize |
converter.PageHeight = ... | renderer.RenderingOptions.SetCustomPaperSize() |
new Margins(t, r, b, l) | 獨立的邊距屬性 |
settings.PageSize = PageSize.A4 | RenderingOptions.PaperSize = PdfPaperSize.A4 |
settings.Orientation = Landscape | RenderingOptions.PaperOrientation = Landscape |
PDF Duo中不可用的功能
| 功能 | IronPDF |
|---|---|
| 頁眉/頁腳 | RenderingOptions.HtmlHeader, HtmlFooter |
| 頁碼 | {page}, {total-pages}佔位符 |
| 水印 | pdf.ApplyWatermark(html) |
| 密碼保護 | pdf.SecuritySettings |
| 文字提取 | pdf.ExtractAllText() |
| PDF到圖像 | pdf.RasterizeToImageFiles() |
| 數位簽名 | pdf.SignWithFile() |
| 表單填充 | pdf.Form.Fields |
功能比較
PDF Duo和IronPDF之間的功能差距非常大。 PDF Duo僅提供基本的HTML-to-PDF和合併功能,而IronPDF提供了一個完整的PDF工具包。
| 功能 | PDF Duo .NET | IronPDF |
|---|---|---|
| HTML到PDF | 基本 | 完整CSS3、JavaScript |
| URL到PDF | 基本 | 完全支持身份驗證 |
| PDF合併 | 是 | 是 |
| 頁眉/頁腳 | 無 | 完整HTML支持 |
| 頁碼 | 無 | 內建佔位符 |
| 水印 | 無 | 基於HTML |
| 密碼保護 | 無 | 完整安全選項 |
| 表單填寫 | 無 | 是 |
| 數位簽名 | 無 | 是 |
| 文字提取 | 無 | 是 |
| PDF轉為圖片 | 無 | 是 |
| 異步支持 | 未知 | 完整的async/await |
| .NET Core/5+ | 未知 | 支持 |
需要頁眉和頁腳、浮水印或安全設置的應用無法通過PDF Duo實現這些功能——它們將需要額外的程式庫或手動PDF操作。
邊距配置差異
這些程式庫以不同的方式處理邊距配置:
PDF Duo邊距:
// PDF Duo uses a Margins object
converter.Margins = new Margins(top: 20, right: 15, bottom: 20, left: 15);// PDF Duo uses a Margins object
converter.Margins = new Margins(top: 20, right: 15, bottom: 20, left: 15);netnetIronPDF邊距:
//IronPDFuses individual properties in millimeters
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginRight = 15;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 15;//IronPDFuses individual properties in millimeters
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginRight = 15;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 15;' IronPDF uses individual properties in millimeters
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginRight = 15
renderer.RenderingOptions.MarginBottom = 20
renderer.RenderingOptions.MarginLeft = 15' IronPDF uses individual properties in millimeters
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginRight = 15
renderer.RenderingOptions.MarginBottom = 20
renderer.RenderingOptions.MarginLeft = 15IronPDF的個別邊距屬性與RenderingOptions類別整合,所有配置皆可透過IDE自動完成發現。
當團隊考慮從PDF Duo轉為IronPDF時
一些因素推動團隊將IronPDF作為PDF Duo替代方案的評估:
文件和學習曲線:PDF Duo稀少的文件使實施困難,幾乎無法進行故障排除。 IronPDF的全面教程和文件加速了開發並簡化了問題解決。
支持可用性:當PDF Duo出現問題時,沒有專業支持渠道和社群協助。 IronPDF提供專業支持及活躍使用者社群,擁有超過4100萬下載量。
維護不確定性:PDF Duo的非活動狀態對於長期專案構成風險。 隨著.NET不斷發展,應用可能會遇到相容性問題,但無法獲得更新。 IronPDF定期更新以確保與.NET 10、C# 14及更高版本相容,直到2026年以後。
功能需求:隨著應用成熟,團隊通常需要超越基本PDF生成的功能 - 帶有頁碼的頁眉、水印草稿文件、保護敏感內容的密碼保護或索引用的文字提取。 PDF Duo 無法提供這些功能。
渲染質量:PDF Duo 的未知渲染引擎會使輸出質量不可預測。 複雜HTML、現代CSS或依賴JavaScript的內容可能會渲染不正確或無法渲染。 IronPDF的Chromium引擎提供一致的高質量渲染。
風險緩解:基於維護不善的程式庫構建生產應用會產生技術負債和潛在的專案失敗。 轉為穩定、支持完善的程式庫可消除此類風險。
安裝比較
PDF Duo 安裝:
Install-Package PDFDuo.NET
IronPDF安裝:
IronPDF在應用程式啟動時需要進行授權金鑰配置:
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"遷移的命名空間變更
| PDF Duo .NET | IronPDF |
|---|---|
using PDFDuo; | using IronPdf; |
using PDFDuo.Document; | using IronPdf; |
using PDFDuo.Rendering; | using IronPdf.Rendering; |
using PDFDuo.Settings; | using IronPdf; |
做出決策
PDF Duo和IronPDF之間的選擇不僅涉及技術功能,還包括基本的專案風險評估:
考慮PDF Duo的風險如果:您需要長期維護,在問題出現時需要支持,可需要超過基本HTML的功能,或無法接受程式庫被棄用的風險。
考慮IronPDF如果:您需要具有專業支持的生產就緒解決方案,需要全面的PDF能力(包括頁眉、浮水印、安全措施),想要具備現代Chromium引擎提供的可預測渲染質量,或正在構建以長期運行為目的的應用。
對於幾乎所有生產用途案例,PDF Duo的不確定狀態和有限的功能集合使其不適合。 選用模糊不清的程式庫帶來的潛在節省很快就會被開發挑戰、缺乏文件導致的除錯,以及未來的不相容風險所抵銷。
開始使用 IronPDF
要評估您的 PDF 生成需求的 IronPDF:
- 安裝IronPDF NuGet包:
Install-Package IronPdf - 查看HTML到PDF教程以獲取基本轉換模式
- 探索文件裝配所需的PDF合併功能
- 檢查用於專業文件格式的頁眉和頁腳
IronPDF教程提供了常見場景的全面範例,API參考文件列出了所有可用的類和方法。
結論
PDF Duo .NET 和IronPDF在.NET PDF生態系統中處於截然不同的位置。 PDF Duo是一個來源不明的程式庫,其文件稀少,維護狀態不明。 IronPDF是一個全面的、積極維護的解決方案,具有專業支持和證明的生產可靠性。
縱使PDF Duo提供基本的HTML至PDF和合併功能,其局限超越了功能本身。 文獻缺乏、支援渠道缺失及未知的維護狀態引發的專案風險,超過任何被認為的利益。 團隊無法有效故障排除,無法依靠未來的相容性,亦無法存取如浮水印或安全設置等高級功能。
對於需要在.NET應用中進行可靠PDF生成的開發人員,IronPDF提供了生產專案要求的穩定性、功能完整性和支援基礎設施。 良好維護的程式庫投資保護專案免受未名行為的除錯隱性成本和管理被棄用相依性的影響。
仔細評估您的專案需求,不僅考慮現有功能需求,還包括長期維護、支持可用性和建在不確定基礎上的真實成本。