跳過到頁腳內容
遷移指南

如何在 C# 中從 pdforge 遷移到 IronPDF

從pdforge遷移到 IronPdf:完整的 C# 遷移指南。

從pdforge遷移到IronPDF可將您的 PDF 生成工作流程從基於雲的 API(在外部服務器上處理文件)轉移到全面的 .NET 函式庫,該函式庫可在您的應用程式本地處理一切。 本指南提供完整的逐步遷移路徑,可消除外部依賴性、免除持續訂閱成本,並讓您完全掌控文件處理管道。

為什麼要從pdforge移轉到 IronPDF

瞭解 pdforge

pdforge 是基於雲端的 PDF 生成 API,透過 API 呼叫與您的應用程式整合,提供直接生成 PDF 檔案的方式。 透過將 PDF 建立的任務卸給外部 API,開發人員可以簡化開發流程。 不過,pdforge 也有一些缺點,例如外部依賴性、有限的客製化選項,以及開發人員應該注意的持續訂閱成本。

雲 API 的依賴性問題

pdforge 在外部雲端伺服器上處理所有文件。 此架構對於生產應用程式造成重大的疑慮:

1.外部伺服器處理:您產生的每個 PDF 都需要將您的 HTML/資料傳送至pdforge的伺服器-您的文件離開了您的基礎架構。

2.隱私與合規風險:敏感資料會透過網際網路傳輸至第三方伺服器。 使用pdforge時,開發人員需要顧及與資料傳送至外部 API 相關的安全問題。 如果 PDF 內容包含敏感資訊,這可能是一個重要的考慮因素。

3.持續訂閱成本:pdforge 的 SaaS 模式會引入持續的營運支出,這些支出會隨著時間累積。

4.網際網路依賴性:網路不可用時無法產生 PDF。

5.費率限制:API 使用上限可能會扼殺大量的應用程式。

6.網路延遲:往返時間會在每次生成 PDF 時增加數秒。

pdforge與IronPDF的比較

特點pdforgeIronPDF
部署類型雲端 API本地圖書館
依賴性需要網際網路和 API 認證無外部依賴
客製化對 PDF 生成的控制有限完全控制自訂
成本結構持續訂閱一次性購買選項
安全性透過網路傳送資料的潛在疑慮讓資料處理完全在本機環境中進行
設定複雜度因外部處理而更容易進行初始設定需要較多的初始設定與組態

IronPDF 的與眾不同之處在於它提供了一個完全本地化的函式庫,讓開發人員可以完全控制 PDF 的製作過程。 這對於偏好內部處理檔案的應用程式,或外部 API 呼叫引入安全疑慮的應用程式尤其有利。IronPDF在本地處理所有內容,將這類風險降到最低。

對於計劃在 2025 年和 2026 年之前採用 .NET 10 和 C# 14 的團隊而言,IronPDF 提供了一個本地處理基礎,消除了對雲的依賴,同時增加了全面的 PDF 操作功能。


開始之前

先決條件

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 套件變更

# Removepdforgepackages
dotnet remove package pdforge
dotnet remove package PdfForge

# Install IronPDF
dotnet add package IronPdf
# Removepdforgepackages
dotnet remove package pdforge
dotnet remove package PdfForge

# Install IronPDF
dotnet add package IronPdf
SHELL

授權組態

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

辨識pdforge使用方式

# Findpdforgeusage
grep -r "PdForge\|PdfClient\|HtmlToPdfRequest\|HtmlToPdfConverter" --include="*.cs" .

# Find placeholder patterns to migrate
grep -r "{totalPages}" --include="*.cs" .
# Findpdforgeusage
grep -r "PdForge\|PdfClient\|HtmlToPdfRequest\|HtmlToPdfConverter" --include="*.cs" .

# Find placeholder patterns to migrate
grep -r "{totalPages}" --include="*.cs" .
SHELL

完整的 API 參考資料

命名空間變更

// Before: pdforge
using PdfForge;
using System.IO;

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

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

核心類對應

pdforgeIronPDF筆記
<編碼>HtmlToPdfConverter</編碼<代碼>ChromePdfRenderer</代碼主要 PDF 生成器
PdfClient<代碼>ChromePdfRenderer</代碼API 用戶端對應
頁面大小.A4<編碼>PdfPaperSize.A4</編碼紙張尺寸枚舉
<編碼>PageOrientation.Landscape</編碼<編碼>PdfPaperOrientation.Landscape</編碼方向枚舉
回傳類型:<編碼>位元組[]</編碼<編碼>PDF 文件</編碼結果物件

方法對應

pdforgeIronPDF筆記
converter.ConvertHtmlString(html)renderer.RenderHtmlAsPdf(html)HTML 字串至 PDF
converter.ConvertUrl(url)renderer.RenderUrlAsPdf(url)URL 至 PDF
File.WriteAllBytes(path, bytes)File.WriteAllBytes(path, bytes)File.WriteAllBytes(path)<代碼>pdf.SaveAs(路徑)</代碼儲存至磁碟
回傳類型:<編碼>位元組[]</編碼<編碼>pdf.BinaryData</編碼取得原始位元組

設定對應

pdforgeIronPdf (RenderingOptions)筆記
converter.PageSize = PageSize.A4renderer.RenderingOptions.PaperSize=PdfPaperSize.A4紙張大小
converter.Orientation = PageOrientation.Landscaperenderer.RenderingOptions.PaperOrientation=PdfPaperOrientation.Landscape(渲染器.渲染選項.紙張方向)導向
Footer = "頁面 {page} of {totalPages}"TextFooter = new TextHeaderFooter { CenterText = "Page {page} of {total-pages}" }TextFooter = 新的 TextHeaderFooter { CenterText = "Page {page} of {total-pages}"}頁尾 (注意占位符變更)

pdforge中不提供的新功能

IronPdf 特點說明
<代碼>PdfDocument.Merge()</代碼結合多個 PDF
<代碼>pdf.ExtractAllText()</代碼從 PDF 擷取文字
<代碼>pdf.ApplyWatermark()</代碼加入水印
<編碼>pdf.SecuritySettings</編碼密碼保護
<代碼>pdf.Form</代碼表格填寫
<代碼>pdf.SignWithDigitalSignature()</代碼數位簽名

程式碼遷移範例

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

之前 (pdforge):

// NuGet: Install-Package PdfForge
using PdfForge;
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.ConvertHtmlString(html);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
// NuGet: Install-Package PdfForge
using PdfForge;
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.ConvertHtmlString(html);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

After (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

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;

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

這裡的根本差異在於處理模型和回傳類型。pdforge使用<編碼>HtmlToPdfConverter</編碼與 ConvertHtmlString() 產生一個 byte[] 陣列,您必須使用 File.WriteAllBytes() 來儲存結果。

IronPDF 使用<代碼>ChromePdfRenderer</代碼與 RenderHtmlAsPdf() 產生一個<編碼>PDF 文件</編碼物件。 這個物件可以直接使用 SaveAs() 來儲存,如果您需要原始的位元組,也可以存取<編碼>pdf.BinaryData</編碼。<編碼>PDF 文件</編碼還允許在儲存之前進行操作(添加水印、與其他 PDF 合併、添加安全性)。 請參閱 HTML to PDF 文件,以瞭解全面的範例。

範例 2:URL 到 PDF 的轉換

之前 (pdforge):

// NuGet: Install-Package PdfForge
using PdfForge;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var pdf = converter.ConvertUrl("https://example.com");
        File.WriteAllBytes("webpage.pdf", pdf);
    }
}
// NuGet: Install-Package PdfForge
using PdfForge;
using System.IO;

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

After (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

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

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

pdforge 在<編碼>HtmlToPdfConverter</編碼類上使用 ConvertUrl() ,返回您使用 File.WriteAllBytes() 寫入的位元組。IronPDF在<代碼>ChromePdfRenderer</代碼上使用 RenderUrlAsPdf() ,使用內建的 SaveAs() 方法返回<編碼>PDF 文件</編碼。

IronPdf 的主要優勢在於使用 Chromium 引擎在本機擷取和渲染 URL,而不會將資料傳送至外部伺服器。IronPDF作為一個本地程式庫,可能會提供更好的效能,因為網路請求不涉及往返時間。 進一步了解 URL 至 PDF 轉換

範例 3:使用自訂設定將 HTML 檔案轉換為 PDF

之前 (pdforge):

// NuGet: Install-Package PdfForge
using PdfForge;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        converter.PageSize = PageSize.A4;
        converter.Orientation = PageOrientation.Landscape;
        var htmlContent = File.ReadAllText("input.html");
        var pdf = converter.ConvertHtmlString(htmlContent);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
// NuGet: Install-Package PdfForge
using PdfForge;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        converter.PageSize = PageSize.A4;
        converter.Orientation = PageOrientation.Landscape;
        var htmlContent = File.ReadAllText("input.html");
        var pdf = converter.ConvertHtmlString(htmlContent);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

After (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
        var htmlContent = System.IO.File.ReadAllText("input.html");
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
        var htmlContent = System.IO.File.ReadAllText("input.html");
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

此範例顯示配置模式的差異。pdforge直接在轉換器物件上設定屬性(converter.PageSize = PageSize.A4converter.Orientation = PageOrientation.Landscape)。

IronPdf 使用 RenderingOptions 屬性與強式類型的枚舉:renderer.RenderingOptions.PaperSize = PdfPaperSize.A4renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape. 這提供 IntelliSense 支援和編譯時的類型安全。 請注意,IronPDF 需要匯入 IronPdf.Rendering 命名空間,以取得紙張大小和方向枚舉。 請參閱 tutorials 以取得更多設定範例。


關鍵遷移注意事項

返回類型變更

pdforge 返回 byte[] ;IronPDF返回<編碼>PDF 文件</編碼:

// pdforge: Returns byte[]
byte[] pdfBytes = converter.ConvertHtmlString(html);
File.WriteAllBytes("output.pdf", pdfBytes);

// IronPDF: Returns PdfDocument
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");           // Direct save
byte[] bytes = pdf.BinaryData;      // Get bytes if needed
// pdforge: Returns byte[]
byte[] pdfBytes = converter.ConvertHtmlString(html);
File.WriteAllBytes("output.pdf", pdfBytes);

// IronPDF: Returns PdfDocument
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");           // Direct save
byte[] bytes = pdf.BinaryData;      // Get bytes if needed
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

轉換器類別變更

// pdforge: HtmlToPdfConverter
var converter = new HtmlToPdfConverter();

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

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

方法名稱變更

//pdforgemethods
converter.ConvertHtmlString(html)
converter.ConvertUrl(url)

//IronPDFmethods
renderer.RenderHtmlAsPdf(html)
renderer.RenderUrlAsPdf(url)
//pdforgemethods
converter.ConvertHtmlString(html)
converter.ConvertUrl(url)

//IronPDFmethods
renderer.RenderHtmlAsPdf(html)
renderer.RenderUrlAsPdf(url)
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

儲存方法變更

// pdforge: Manual file write
File.WriteAllBytes("output.pdf", pdfBytes);

// IronPDF: Built-in save method
pdf.SaveAs("output.pdf");
// pdforge: Manual file write
File.WriteAllBytes("output.pdf", pdfBytes);

// IronPDF: Built-in save method
pdf.SaveAs("output.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

設定位置變更

pdforge 使用轉換器上的屬性; IronPdf 使用 RenderingOptions:

// pdforge: Properties on converter
converter.PageSize = PageSize.A4;
converter.Orientation = PageOrientation.Landscape;

// IronPDF: Properties on RenderingOptions
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
// pdforge: Properties on converter
converter.PageSize = PageSize.A4;
converter.Orientation = PageOrientation.Landscape;

// IronPDF: Properties on RenderingOptions
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

頁首/頁尾占位符語法

如果您在頁首或頁尾使用頁碼,佔位符的語法會有所不同:

//pdforgeplaceholders
"Page {page} of {totalPages}"

//IronPDFplaceholders
"Page {page} of {total-pages}"  // Note: hyphen in total-pages
//pdforgeplaceholders
"Page {page} of {totalPages}"

//IronPDFplaceholders
"Page {page} of {total-pages}"  // Note: hyphen in total-pages
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

遷移後的新功能

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

PDF 合併

var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

文字萃取

var pdf = PdfDocument.FromFile("document.pdf");
string allText = pdf.ExtractAllText();
var pdf = PdfDocument.FromFile("document.pdf");
string allText = pdf.ExtractAllText();
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

水印。

pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");
pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

密碼保護

pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

功能比較摘要

特點pdforgeIronPDF
HTML 至 PDF
URL 至 PDF
頁面設定
離線能力
本地處理
合併 PDF
分割 PDF
擷取文字
水印
表格填寫
數位簽名
密碼保護
無費率限制
一次性授權

遷移清單

預遷移

  • [清查程式碼庫中所有pdforgeAPI 呼叫
  • [ ] 記錄目前使用的組態選項(頁面大小、方向)
  • [ ] 確定要更新的頁首/頁尾占位符 ({totalPages}{total-pages})
  • [ ] 計劃IronPDF授權金鑰的儲存(建議使用環境變數)
  • [ ] 先使用 IronPdf 試用授權進行測試

套件變更

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

程式碼變更

  • [ ] 更新所有名稱空間的匯入 (using PdfForge;using IronPdf;)
  • [ ] 為紙張大小和方向枚舉添加 using IronPDF.Rendering;
  • [ ] 將<編碼>HtmlToPdfConverter</編碼替換為 ChromePdfRenderer
  • [ ] 將 ConvertHtmlString() 替換為 RenderHtmlAsPdf()
  • [將 ConvertUrl() 替換為 RenderUrlAsPdf()
  • [ ] 將 File.WriteAllBytes() 替換為 pdf.SaveAs()
  • [ ] 移動 PageSize 屬性到 RenderingOptions.PaperSize
  • [ ] 移動 Orientation 屬性至 RenderingOptions.PaperOrientation
  • [ ] 更新枚舉名稱 (PageSize.A4PdfPaperSize.A4)
  • [ ] 更新枚舉名稱 (PageOrientation.LandscapePdfPaperOrientation.Landscape)
  • [更新頁首/頁尾的占位符語法

後遷移

  • [測試 PDF 輸出品質是否符合預期
  • [ ] 驗證離線操作是否有效
  • [ ] 從組態中移除 API 認證
  • [ ] 必要時增加新功能(合併、水印、安全性

結論

從pdforge轉移到IronPDF可將您的 PDF 工作流程從依賴雲端的 API 服務轉換為本地處理、功能齊全的 PDF 函式庫。 遷移可以省去持續訂閱的費用、消除網際網路的依賴性,並透過在您的伺服器上保留所有文件處理,提供完整的資料隱私。

本次轉換的主要變更如下 1.主要類別HtmlToPdfConverter →<代碼>ChromePdfRenderer</代碼。 2.HTML 方法ConvertHtmlString()RenderHtmlAsPdf() 3.URL 方法ConvertUrl()RenderUrlAsPdf() 4.返回類型byte[]PdfDocument 5.儲存方法File.WriteAllBytes()pdf.SaveAs() 6.頁面大小converter.PageSize = PageSize.A4renderer.RenderingOptions.PaperSize = PdfPaperSize.A4 7.方向converter.Orientation = PageOrientation.Landscaperenderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape 8.新功能:PDF 合併、文字萃取、水印、數位簽章等功能

在pdforge和IronPDF之間做決定主要取決於特定的專案需求,尤其是客製化需求、預算和安全性方面的考量。IronPDF提供了一套更全面的工具,具有強大的安全優勢,適合能夠管理本機部署的開發人員使用。 透過本機處理,IronPDF 可規避與雲端模式相關的隱私問題,並為應用程式開發人員提供更具成本效益、可擴充的解決方案。

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

Curtis Chau
技術作家

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

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