如何在 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的比較
| 特點 | pdforge | IronPDF |
|---|---|---|
| 部署類型 | 雲端 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授權組態
// 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辨識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" .完整的 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核心類對應
| pdforge | IronPDF | 筆記 |
|---|---|---|
| <編碼>HtmlToPdfConverter</編碼 | <代碼>ChromePdfRenderer</代碼 | 主要 PDF 生成器 |
PdfClient | <代碼>ChromePdfRenderer</代碼 | API 用戶端對應 |
頁面大小.A4 | <編碼>PdfPaperSize.A4</編碼 | 紙張尺寸枚舉 |
| <編碼>PageOrientation.Landscape</編碼 | <編碼>PdfPaperOrientation.Landscape</編碼 | 方向枚舉 |
| 回傳類型:<編碼>位元組[]</編碼 | <編碼>PDF 文件</編碼 | 結果物件 |
方法對應
| pdforge | IronPDF | 筆記 |
|---|---|---|
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</編碼 | 取得原始位元組 |
設定對應
| pdforge | IronPdf (RenderingOptions) | 筆記 |
|---|---|---|
converter.PageSize = PageSize.A4 | renderer.RenderingOptions.PaperSize=PdfPaperSize.A4。 | 紙張大小 |
converter.Orientation = PageOrientation.Landscape | renderer.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.comAfter (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這裡的根本差異在於處理模型和回傳類型。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.comAfter (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.compdforge 在<編碼>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.comAfter (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此範例顯示配置模式的差異。pdforge直接在轉換器物件上設定屬性(converter.PageSize = PageSize.A4、converter.Orientation = PageOrientation.Landscape)。
IronPdf 使用 RenderingOptions 屬性與強式類型的枚舉:renderer.RenderingOptions.PaperSize = PdfPaperSize.A4 和 renderer.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 neededIRON VB CONVERTER ERROR developers@ironsoftware.com轉換器類別變更
// 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方法名稱變更
//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儲存方法變更
// 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設定位置變更
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頁首/頁尾占位符語法
如果您在頁首或頁尾使用頁碼,佔位符的語法會有所不同:
//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-pagesIRON VB CONVERTER ERROR developers@ironsoftware.com遷移後的新功能
轉移到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文字萃取
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水印。
pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");IRON VB CONVERTER ERROR developers@ironsoftware.com密碼保護
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";IRON VB CONVERTER ERROR developers@ironsoftware.com功能比較摘要
| 特點 | pdforge | IronPDF |
|---|---|---|
| HTML 至 PDF | ✓ | ✓ |
| URL 至 PDF | ✓ | ✓ |
| 頁面設定 | ✓ | ✓ |
| 離線能力 | ✗ | ✓ |
| 本地處理 | ✗ | ✓ |
| 合併 PDF | ✗ | ✓ |
| 分割 PDF | ✗ | ✓ |
| 擷取文字 | ✗ | ✓ |
| 水印 | ✗ | ✓ |
| 表格填寫 | ✗ | ✓ |
| 數位簽名 | ✗ | ✓ |
| 密碼保護 | ✗ | ✓ |
| 無費率限制 | ✗ | ✓ |
| 一次性授權 | ✗ | ✓ |
遷移清單
預遷移
- [清查程式碼庫中所有pdforgeAPI 呼叫
- [ ] 記錄目前使用的組態選項(頁面大小、方向)
- [ ] 確定要更新的頁首/頁尾占位符 (
{totalPages}→{total-pages}) - [ ] 計劃IronPDF授權金鑰的儲存(建議使用環境變數)
- [ ] 先使用 IronPdf 試用授權進行測試
套件變更
- [ ] 移除
pdforgeNuGet 套件 - [ ] 移除
PdfForgeNuGet 套件 - [ ] 安裝
IronPDFNuGet 套件: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.A4→PdfPaperSize.A4) - [ ] 更新枚舉名稱 (
PageOrientation.Landscape→PdfPaperOrientation.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.A4 → renderer.RenderingOptions.PaperSize = PdfPaperSize.A4 7.方向:converter.Orientation = PageOrientation.Landscape → renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape 8.新功能:PDF 合併、文字萃取、水印、數位簽章等功能
在pdforge和IronPDF之間做決定主要取決於特定的專案需求,尤其是客製化需求、預算和安全性方面的考量。IronPDF提供了一套更全面的工具,具有強大的安全優勢,適合能夠管理本機部署的開發人員使用。 透過本機處理,IronPDF 可規避與雲端模式相關的隱私問題,並為應用程式開發人員提供更具成本效益、可擴充的解決方案。






