跳過到頁腳內容
遷移指南

如何用 C# 從 PeachPDF 轉移到 IronPDF

從PeachPDF轉移到 IronPDF:完整的 C# 遷移指南。

從PeachPDF轉移到 IronPDF,可以使用具有全面功能、積極開發和專業支援的企業級 PDF 生成工具。 本指南提供完整的逐步遷移路徑,可將您的基本 HTML-to-PDF 工作流程轉換為具有現代 Chromium 渲染、進階安全選項和廣泛操作功能的全功能 PDF 解決方案。

為什麼要從PeachPDF轉移到 IronPDF?

瞭解 PeachPDF。

PeachPDF 是 .NET 生態系統中相對較新的加入者,專為需要將 HTML 轉換為 PDF 的開發人員所設計。 作為一個函式庫,PeachPDF 承諾採用純 .NET 實作,不依賴外部程序,確保能夠在支援 .NET 的平台上無縫整合。 此特性使PeachPDF成為尋找輕量級管理庫解決方案專案的吸引人的選擇。

儘管PeachPDF極具潛力,但目前仍處於開發階段,既有令人振奮的可能性,也有值得注意的限制。PeachPDF純正的 .NET Core,可在多樣化的環境中直接部署,因此仍然極具吸引力。 然而,這也會轉化為有限的採用,用戶群和社群驅動的支援較少。

PeachPDF的限制

PeachPDF 是一個相對較新、知名度較低的 PDF 函式庫,在成熟度、功能和支援方面都不如成熟的解決方案。 遷移的主要原因:

1.有限的功能集:PeachPDF 缺乏先進的功能,例如數位簽章、PDF/A 合規性和複雜的文字萃取。

2.小社區:有限的文件、範例和社群支援。 由於使用者基數較小,社群支援可能較為稀疏,因此要獲得協助或找到廣泛的說明文件相當具有挑戰性。

3.不確定的未來:沒有既定記錄的新函式庫會有被採用的風險。

4.基本 HTML 支援:有限的 CSS 和JavaScript渲染能力。

5.無企業支援:無專業支援或 SLA 選項。

PeachPDF與IronPDF的比較

特點/特性PeachPDFIronPDF
實作純 .NET具有廣泛相容性的管理
執照開放原始碼 (BSD-3-Clause)商業的
使用者群小型大型 (40M+ 下載)
<強>支援</強社群驅動專業並有專人支援
HTML 渲染基本的完整的 Chromium
CSS 支援限額完整的 CSS3
JavaScript基本的完整的 ES2024
數位簽名
PDF/A合規性
說明文件限額廣泛
開發狀態開發中成熟、穩定的版本

IronPDF 以更廣泛的功能脫穎而出,不僅支援 HTML 到 PDF 的轉換,還支援 OCR、水印和其他進階功能。 其專業的支援架構是絕對的優勢,可快速解決開發人員所面臨的問題。

對於計劃在 2025 年和 2026 年之前採用 .NET 10 和 C# 14 的團隊而言,IronPDF 提供了全面的功能和積極的維護,可確保長期的穩定性以及與現代 .NET Framework 的相容性。


開始之前

先決條件

1..NET 環境:.NET Framework 4.6.2+ 或 .NET Core 3.1+ / .NET 5/6/7/8/9+ 2.NuGet存取:安裝 NuGet 套件的能力 3.IronPDF 授權:從IronPdf.com取得您的授權金鑰。

NuGet 套件變更

# Remove PeachPDF
dotnet remove package PeachPDF

# Install IronPDF
dotnet add package IronPdf
# Remove PeachPDF
dotnet remove package PeachPDF

# Install IronPDF
dotnet add package IronPdf
SHELL

授權組態

// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

識別PeachPDF使用情況

# AuditPeachPDFusage in codebase
grep -r "using PeachPDF" --include="*.cs" .
grep -r "HtmlToPdfConverter\|Convert\|ConvertUrl" --include="*.cs" .
# AuditPeachPDFusage in codebase
grep -r "using PeachPDF" --include="*.cs" .
grep -r "HtmlToPdfConverter\|Convert\|ConvertUrl" --include="*.cs" .
SHELL

完整的 API 參考資料

命名空間變更

// Before: PeachPDF
using PeachPDF;
using System.IO;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
// Before: PeachPDF
using PeachPDF;
using System.IO;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

核心 API 對應

PeachPDFIronPDF筆記
新的 HtmlToPdfConverter()新的 ChromePdfRenderer()建立呈現器
converter.Convert(html)renderer.RenderHtmlAsPdf(html)HTML 至 PDF
converter.ConvertUrl(url)renderer.RenderUrlAsPdf(url)URL 至 PDF
<編碼>converter.Header</編碼<編碼>renderer.RenderingOptions.HtmlHeader</編碼標題內容
converter.Footer<編碼>renderer.RenderingOptions.HtmlFooter</編碼頁尾內容
File.WriteAllBytes(path, pdf)<代碼>pdf.SaveAs(路徑)</代碼儲存檔案
pdf (byte[])<編碼>pdf.BinaryData</編碼取得 bytes
<代碼>PdfReader.LoadFromFile(路徑)</代碼PdfDocument.FromFile(path)載入 PDF
<編碼>document.MergeWith(other)</編碼<代碼>PdfDocument.Merge(pdfs)</代碼合併 PDF

程式碼遷移範例

範例 1:HTML 字串至 PDF 的轉換

之前 (PeachPDF):

using PeachPDF;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = converter.Convert(html);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
using PeachPDF;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = converter.Convert(html);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

After (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

本範例展示了兩個函式庫的基本差異。PeachPDF使用 HtmlToPdfConverter 與一個返回 byte[]Convert() 方法,需要檔案.WriteAllBytes()來儲存。IronPDF使用 ChromePdfRendererRenderHtmlAsPdf() 產生 PdfDocument 物件,並內建<編碼>SaveAs()</編碼方法。

IronPDF 方法的主要優勢:PdfDocument 物件可以在儲存前進一步操作(添加水印、合併、安全設定),而PeachPDF的 byte array 則是最終輸出。IronPDF的方法提供了更簡潔的語法,並能更好地與現代 .NET 應用程式整合。 請參閱 HTML to PDF 文件,以瞭解全面的範例。

範例 2:URL 到 PDF 的轉換

之前 (PeachPDF):

using PeachPDF;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var url = "https://www.example.com";
        var pdf = converter.ConvertUrl(url);
        File.WriteAllBytes("webpage.pdf", pdf);
    }
}
using PeachPDF;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var url = "https://www.example.com";
        var pdf = converter.ConvertUrl(url);
        File.WriteAllBytes("webpage.pdf", pdf);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

After (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var url = "https://www.example.com";
        var pdf = renderer.RenderUrlAsPdf(url);
        pdf.SaveAs("webpage.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var url = "https://www.example.com";
        var pdf = renderer.RenderUrlAsPdf(url);
        pdf.SaveAs("webpage.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

PeachPDF 使用 ConvertUrl() 而IronPDF使用 RenderUrlAsPdf() 。IronPDF中的方法命名更具描述性--它明確指出 URL 將被渲染為 PDF。 這兩個函式庫處理 URL 到 PDF 的轉換方式類似,但IronPDF的完整 Chromium 引擎可為具有複雜 CSS 和JavaScript的現代網頁提供優異的渲染效果。 請參閱我們的 教學,瞭解更多資訊。

範例 3:新增頁首和頁尾

之前 (PeachPDF):

using PeachPDF;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        converter.Header = "<div style='text-align:center'>My Header</div>";
        converter.Footer = "<div style='text-align:center'>Page {page}</div>";
        var html = "<html><body><h1>Document Content</h1></body></html>";
        var pdf = converter.Convert(html);
        File.WriteAllBytes("document.pdf", pdf);
    }
}
using PeachPDF;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        converter.Header = "<div style='text-align:center'>My Header</div>";
        converter.Footer = "<div style='text-align:center'>Page {page}</div>";
        var html = "<html><body><h1>Document Content</h1></body></html>";
        var pdf = converter.Convert(html);
        File.WriteAllBytes("document.pdf", pdf);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

After (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center'>My Header</div>" };
        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center'>Page {page}</div>" };
        var html = "<html><body><h1>Document Content</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("document.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center'>My Header</div>" };
        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center'>Page {page}</div>" };
        var html = "<html><body><h1>Document Content</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("document.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

此範例顯示了一個關鍵的架構差異。PeachPDF使用簡單的字串屬性(converter.Headerconverter.Footer)作為頁首和頁尾。 IronPdf 使用指定給 RenderingOptions.HtmlHeaderRenderingOptions.HtmlFooterHtmlHeaderFooter 物件。

IronPDF 方法提供了更大的靈活性--HtmlHeaderFooter 物件可以包含額外的屬性,如 MaxHeight 用於控制標頭/標腳大小。請注意,這兩個函式庫都使用 {page} 作為頁碼占位符。IronPDF也支援 {total-pages} 來顯示總頁數。

請注意IronPDF所需的額外命名空間:HtmlHeaderFooter 類需要使用 IronPdf.Rendering;。


關鍵遷移注意事項

轉換器類別變更

PeachPDF 使用 HtmlToPdfConverter ;IronPDF使用 ChromePdfRenderer

// PeachPDF
var converter = new HtmlToPdfConverter();

// IronPDF
var renderer = new ChromePdfRenderer();
// PeachPDF
var converter = new HtmlToPdfConverter();

// IronPDF
var renderer = new ChromePdfRenderer();
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

返回類型變更

PeachPDF 返回 byte[] ;IronPDF返回 PdfDocument

// PeachPDF: Returns byte array
byte[] pdf = converter.Convert(html);
File.WriteAllBytes("output.pdf", pdf);

// IronPDF: Returns PdfDocument object
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or get bytes: byte[] bytes = pdf.BinaryData;
// PeachPDF: Returns byte array
byte[] pdf = converter.Convert(html);
File.WriteAllBytes("output.pdf", pdf);

// IronPDF: Returns PdfDocument object
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or get bytes: byte[] bytes = pdf.BinaryData;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

頁首/頁尾屬性變更

// PeachPDF: Simple string properties
converter.Header = "<div>Header</div>";
converter.Footer = "<div>Footer</div>";

// IronPDF: HtmlHeaderFooter objects
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter() 
{ 
    HtmlFragment = "<div>Header</div>" 
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter() 
{ 
    HtmlFragment = "<div>Footer</div>" 
};
// PeachPDF: Simple string properties
converter.Header = "<div>Header</div>";
converter.Footer = "<div>Footer</div>";

// IronPDF: HtmlHeaderFooter objects
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter() 
{ 
    HtmlFragment = "<div>Header</div>" 
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter() 
{ 
    HtmlFragment = "<div>Footer</div>" 
};
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

方法名稱變更

PeachPDFIronPDF
Convert(html)RenderHtmlAsPdf(html)
<編碼>ConvertUrl(url)</編碼<代碼>RenderUrlAsPdf(url)</代碼
檔案.WriteAllBytes()<編碼>SaveAs()</編碼

遷移後的新功能

轉移到IronPDF之後,您將獲得PeachPDF無法提供的功能:

PDF 合併

var pdf1 = PdfDocument.FromFile("doc1.pdf");
var pdf2 = PdfDocument.FromFile("doc2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
var pdf1 = PdfDocument.FromFile("doc1.pdf");
var pdf2 = PdfDocument.FromFile("doc2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
CONVERTER NOT RUNNING
$vbLabelText   $csharpLabel

使用 HTML 的水印

var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark("<div style='color: red; font-size: 48pt;'>DRAFT</div>");
pdf.SaveAs("watermarked.pdf");
var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark("<div style='color: red; font-size: 48pt;'>DRAFT</div>");
pdf.SaveAs("watermarked.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

密碼保護

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential</h1>");

pdf.SecuritySettings.OwnerPassword = "owner123";
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;

pdf.SaveAs("protected.pdf");
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential</h1>");

pdf.SecuritySettings.OwnerPassword = "owner123";
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;

pdf.SaveAs("protected.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

數位簽名

using IronPdf.Signing;

var pdf = PdfDocument.FromFile("document.pdf");
var signature = new PdfSignature("certificate.pfx", "password")
{
    SigningReason = "Document Approval",
    SigningLocation = "New York"
};
pdf.Sign(signature);
pdf.SaveAs("signed.pdf");
using IronPdf.Signing;

var pdf = PdfDocument.FromFile("document.pdf");
var signature = new PdfSignature("certificate.pfx", "password")
{
    SigningReason = "Document Approval",
    SigningLocation = "New York"
};
pdf.Sign(signature);
pdf.SaveAs("signed.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

非同步操作

var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Async PDF</h1>");
pdf.SaveAs("async_output.pdf");
var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Async PDF</h1>");
pdf.SaveAs("async_output.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

功能比較摘要

特點PeachPDFIronPDF
HTML 至 PDF基本的完整的 Chromium
URL 至 PDF限額
CSS 網格/Flexbox
JavaScript限額完整的 ES2024
合併 PDF
分割 PDF限額
水印限額完整 HTML
頁首/頁尾基本的完整 HTML
數位簽名
PDF/A
表格填寫限額
文字擷取基本的
圖片擷取
同步支援限額
跨平台未知

常見的遷移問題

問題 1:不同的 API 模式

問題:PeachPDF使用具有位元組陣列輸出的轉換器模式;IronPDF使用 PdfDocument 輸出的渲染器模式。

解決方案:

//PeachPDFpattern
var converter = new HtmlToPdfConverter();
var pdf = converter.Convert(html);
File.WriteAllBytes(path, pdf);

//IronPDFpattern
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(path);
//PeachPDFpattern
var converter = new HtmlToPdfConverter();
var pdf = converter.Convert(html);
File.WriteAllBytes(path, pdf);

//IronPDFpattern
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(path);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

問題 2:儲存方法的差異

問題:PeachPDF需要 File.WriteAllBytes();IronPDF內建<編碼>SaveAs()</編碼功能。

解決方案:pdf.SaveAs("path") 取代 File.WriteAllBytes("path", pdf)

問題 3:頁首/頁尾物件

問題:PeachPDF使用字串屬性; IronPdf 使用物件屬性。

解決方案:使用 HtmlFragment 屬性將 HTML 字串包覆在 HtmlHeaderFooter 物件中。


遷移清單

預遷移

  • [ ] 審核PeachPDF在程式碼庫中的使用情況
  • [ ] 文件自訂配置
  • [ ] 注意所有頭部/腳部實作
  • [ ] 從 ironpdf.com 獲得IronPDF授權金鑰
  • [ ] 先使用 IronPdf 試用授權進行測試

套件變更

  • [ ] 移除 PeachPDF NuGet 套件
  • [ ] 安裝 IronPDF NuGet 套件:dotnet add package IronPdf

程式碼變更

  • [ ] 更新命名空間匯入 (using PeachPDF;using IronPdf;)
  • [ ] 新增 使用 IronPDF.Rendering; 的頁首/頁尾功能
  • [ ] 將 HtmlToPdfConverter 替換為 ChromePdfRenderer
  • [ ] 將converter.Convert(html)替換為 renderer.RenderHtmlAsPdf(html)
  • [將converter.ConvertUrl(url)。替換為renderer.RenderUrlAsPdf(url)。。
  • [ ] 將File.WriteAllBytes(path, pdf)替換為<代碼>pdf.SaveAs(路徑)</代碼。
  • [ ] 將 converter.Header/Footer 改為 RenderingOptions.HtmlHeader/HtmlFooter 物件
  • [ ] 在應用程式啟動時加入授權初始化

後遷移

  • [ ] 測試 HTML 呈現品質
  • [驗證 PDF 輸出是否符合預期
  • [ ] 用頁碼測試頁首/頁尾的呈現
  • [ ] 必要時增加新功能(安全性、水印、合併)。

結論

在PeachPDF和IronPDF之間進行選擇時,最終的決定取決於專案的具體需求。PeachPDF採用純 .NET 實作,非常適合需要輕量級開放原始碼解決方案的專案,而不需要廣泛的功能集或支援。 然而,就更廣泛的功能、重要的社群支援和專業協助而言,IronPDF 擁有明顯的優勢,使其成為希望利用可靠、具持續支援的商業解決方案的企業的最佳選擇。

本次轉換的主要變更如下 1.轉換器類別HtmlToPdfConverterChromePdfRenderer 。 2.HTML 方法Convert(html)RenderHtmlAsPdf(html) 3.URL 方法ConvertUrl(url)RenderUrlAsPdf(url) 4.返回類型byte[]PdfDocument 5.儲存方法File.WriteAllBytes()pdf.SaveAs() 6.Headers/Footers: 字串屬性 → HtmlHeaderFooter 物件 7.命名空間using PeachPDF;using IronPdf; + using IronPdf.Rendering; 8.新功能:數位簽章、符合PDF/A規範、完整的 CSS3/JavaScript 支援等。

IronPDF 提供企業級的 PDF 生成功能,其全面的功能、積極的開發和專業的支援是PeachPDF無法提供的。IronPDF 擁有龐大的用戶群和豐富的說明文件,可確保長期的穩定性以及與現代 .NET Framework 的相容性。

探索完整的IronPdf文件教程API參考,加速您的PeachPDF遷移。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。