如何在 C# 中從 PdfPig 遷移到 IronPDF
從PdfPig移轉到 IronPDF:完整的 C# 遷移指南。
從PdfPig遷移到IronPDF可將您的 PDF 功能從純讀取的函式庫,擴展為可處理建立、操作、文字萃取和安全功能的全面 PDF 解決方案。 本指南提供了一個完整的、按步驟的轉移路徑,在保留您現有的提取工作流程的同時,增加了 PDF 生成、HTML 轉換、文檔處理以及PdfPig無法提供的安全功能。
為什麼要從PdfPig轉移到 IronPDF?
瞭解 PdfPig
PdfPig 是專為 C# 設計的開放原始碼 PDF 閱讀與萃取函式庫。 作為享有盛名的 Apache PDFBox 專案的分支,這個函式庫可讓開發人員精確地存取 PDF 的內容。 雖然PdfPig在擷取功能上表現亮眼,但相較於市面上更全面的函式庫,其範圍仍相當有限。
PdfPig 為開發人員提供可靠的工具,從 PDF 檔案中萃取文字、影像、表單資料和元資料。 這使其成為主要著重於文件分析和資料挖掘的應用程式的合適選擇。 然而,PdfPig 的功能基本上只限於解析現有的文件。
僅限閱讀
PdfPig 專注於 PDF 閱讀。 當您的應用程式需要成長而無法抽取時,PdfPig 無法提供協助:
1.無法產生 PDF:無法從 HTML、URL 或程式化方式建立 PDF。
2.No HTML-to-PDF:PdfPig是一個PDF閱讀/解析庫,而不是一個PDF生成庫。 您需要使用不同的函式庫將 HTML 轉換為 PDF。
3.無文件處理:無法合併、分割或修改 PDF。
4.無安全功能:無法新增密碼、加密或數位簽章。
5.無水印/戳記:無法在現有文件上加入視覺覆蓋。
6.無法填寫表格:無法以程式方式填寫 PDF 表單。
PdfPig與IronPDF的比較
| 特點 | PdfPig | IronPDF |
|---|---|---|
| 執照 | 開放原始碼 (Apache 2.0) | 商業的 |
| PDF閱讀/提取 | 出色的 | 出色的 |
| PDF生成 | 限額 | 全面性 |
| HTML至PDF | 不支援 | 支援 |
| 文字萃取 | 出色的 | 出色的 |
| PDF 操作 | 不支援 | 合併、分割、旋轉 |
| 水印。 | 不支援 | 全面支援 |
| 安全性/加密 | 不支援 | 全面支援 |
| 支援與說明文件 | 社群支援 | 專屬支援 |
| 頁面索引 | 1 基於 | 基於 0 |
IronPDF 支援建立、閱讀、編輯和簽署 PDF 的全套功能。 此多功能性可讓開發人員從頭到尾管理 PDF 檔案。 對於計劃在 2025 年和 2026 年之前採用 .NET 10 和 C# 14 的團隊而言,IronPDF 提供了完整的 PDF 生命週期解決方案,其功能超越了PdfPig的閱讀功能。
開始之前
先決條件
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 PdfPig
dotnet remove package PdfPig
# Install IronPDF
dotnet add package IronPdf# Remove PdfPig
dotnet remove package PdfPig
# 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識別PdfPig用法
# FindPdfPigusage
grep -r "UglyToad\.PdfPig\|PdfDocument\.Open\|GetPages\(\)" --include="*.cs" .
# Find page index references (may need 1→0 conversion)
grep -r "GetPage(\|NumberOfPages" --include="*.cs" .# FindPdfPigusage
grep -r "UglyToad\.PdfPig\|PdfDocument\.Open\|GetPages\(\)" --include="*.cs" .
# Find page index references (may need 1→0 conversion)
grep -r "GetPage(\|NumberOfPages" --include="*.cs" .完整的 API 參考資料
命名空間變更
// Before: PdfPig
using UglyToad.PdfPig;
using UglyToad.PdfPig.Content;
using UglyToad.PdfPig.DocumentLayoutAnalysis.WordExtractor;
// After: IronPDF
using IronPdf;
using IronPdf.Rendering;// Before: PdfPig
using UglyToad.PdfPig;
using UglyToad.PdfPig.Content;
using UglyToad.PdfPig.DocumentLayoutAnalysis.WordExtractor;
// After: IronPDF
using IronPdf;
using IronPdf.Rendering;IRON VB CONVERTER ERROR developers@ironsoftware.com文件載入映射
| PdfPig | IronPDF | 筆記 |
|---|---|---|
| <代碼>PdfDocument.Open(路徑)</代碼 | PdfDocument.FromFile(path) | 從檔案載入 |
PdfDocument.Open(bytes) | <代碼>PdfDocument.FromBinaryData(bytes)</代碼 | 從字節載入 |
| <代碼>PdfDocument.Open(stream)</代碼 | PdfDocument.FromStream(stream) | 從串流載入 |
using (var doc = ...) | var pdf = ... | IronPdf 不需要使用 |
頁面存取與內容對應
| PdfPig | IronPDF | 筆記 |
|---|---|---|
| <編碼>document.NumberOfPages</編碼 | <編碼>pdf.PageCount</編碼 | 總頁數 |
| <代碼>document.GetPages()</代碼 | <代碼>pdf.Pages</代碼 | 頁面收集 |
document.GetPage(1)。 | <代碼>pdf.Pages[0]</代碼 | 單頁(註:以 1 為基礎 vs 以 0 為基礎) |
文字萃取對應
| PdfPig | IronPDF | 筆記 |
|---|---|---|
page.Text | <代碼>pdf.Pages[i].Text</代碼 | 頁面文字 |
page.GetWords() | pdf.ExtractTextFromPage(i)。 | 來自頁面的文字 |
| (manual loop) | <代碼>pdf.ExtractAllText()</代碼 | 一次翻譯所有文字 |
元資料存取對應
| PdfPig | IronPDF | 筆記 |
|---|---|---|
文件.資訊.標題 | <編碼>pdf.MetaData.Title</編碼 | 文件標題 |
文件.資訊.作者 | <編碼>pdf.MetaData.Author</編碼 | 作者 |
文件.資訊.主題 | <編碼>pdf.MetaData.Subject</編碼 | 主題 |
document.Information.Creator | <代碼>pdf.MetaData.Creator</代碼 | 創作者 |
document.Information.Producer | <編碼>pdf.MetaData.Producer</編碼 | 製作人員 |
PdfPig不提供的新功能
| IronPdf 特點 | 說明 |
|---|---|
renderer.RenderHtmlAsPdf(html)。 | HTML 至 PDF 的轉換 |
renderer.RenderUrlAsPdf(url)。 | URL 轉換為 PDF |
| <代碼>PdfDocument.Merge(pdfs)</代碼 | 合併多個 PDF |
pdf.ApplyWatermark(html)。 | 加入水印 |
pdf.SecuritySettings.UserPassword | 密碼保護 |
| <代碼>pdf.Sign(證書)</代碼 | 數位簽名 |
程式碼遷移範例
範例 1:從 PDF 擷取文字
之前 (PdfPig):
// NuGet: Install-Package PdfPig
using UglyToad.PdfPig;
using System;
using System.Text;
class Program
{
static void Main()
{
using (var document = PdfDocument.Open("input.pdf"))
{
var text = new StringBuilder();
foreach (var page in document.GetPages())
{
text.AppendLine(page.Text);
}
Console.WriteLine(text.ToString());
}
}
}// NuGet: Install-Package PdfPig
using UglyToad.PdfPig;
using System;
using System.Text;
class Program
{
static void Main()
{
using (var document = PdfDocument.Open("input.pdf"))
{
var text = new StringBuilder();
foreach (var page in document.GetPages())
{
text.AppendLine(page.Text);
}
Console.WriteLine(text.ToString());
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comAfter (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("input.pdf");
string text = pdf.ExtractAllText();
Console.WriteLine(text);
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("input.pdf");
string text = pdf.ExtractAllText();
Console.WriteLine(text);
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comPdfPig 和IronPDF都提供優異的文字擷取功能。 關鍵差異在於程式碼模式。 PdfPig需要使用PdfDocument.Open()的using語句,使用GetPages()手動迭代頁面,以及使用StringBuilder來累積每個page.Text屬性的文字。
IronPDF 將此簡化為單一呼叫:PdfDocument.FromFile() 載入文件,ExtractAllText() 一次返回所有文字內容。 不需要 using 語句,不需要手動迭代,不需要 StringBuilder。 請參閱 文字萃取文件,以瞭解其他選項。
範例 2:HTML 到 PDF 的轉換
之前 (PdfPig):
//PdfPigdoes not supportHTML 至 PDFconversion
//PdfPigis a PDF reading/parsing library, not a PDF generation library
// You would need to use a different library forHTML 至 PDFconversion//PdfPigdoes not supportHTML 至 PDFconversion
//PdfPigis a PDF reading/parsing library, not a PDF generation library
// You would need to use a different library forHTML 至 PDFconversionIRON 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.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML</p>");
pdf.SaveAs("output.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML</p>");
pdf.SaveAs("output.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com這個例子突顯了最重要的能力差距。PdfPig 明確指出它"不支援 HTML 到 PDF 的轉換",而且"是一個 PDF 讀取/解析函式庫,而不是 PDF 產生函式庫"。如果你需要用PdfPig從HTML創建PDF,你將需要使用一個完全不同的庫。
IronPDF 透過 ChromePdfRenderer 提供原生 HTML 至 PDF 的轉換。 RenderHtmlAsPdf() 方法接受 HTML 字串,並在內部使用 Chromium 引擎將其轉換為 PDF 文件,以便準確呈現 HTML、CSS 和 JavaScript。 所產生的 PdfDocument 可用 SaveAs() 儲存,或在儲存前進一步處理。 請參閱 HTML to PDF 文件,以瞭解全面的範例。
範例 3:讀取 PDF 元資料
之前 (PdfPig):
// NuGet: Install-Package PdfPig
using UglyToad.PdfPig;
using System;
class Program
{
static void Main()
{
using (var document = PdfDocument.Open("input.pdf"))
{
var info = document.Information;
Console.WriteLine($"Title: {info.Title}");
Console.WriteLine($"Author: {info.Author}");
Console.WriteLine($"Subject: {info.Subject}");
Console.WriteLine($"Creator: {info.Creator}");
Console.WriteLine($"Producer: {info.Producer}");
Console.WriteLine($"Number of Pages: {document.NumberOfPages}");
}
}
}// NuGet: Install-Package PdfPig
using UglyToad.PdfPig;
using System;
class Program
{
static void Main()
{
using (var document = PdfDocument.Open("input.pdf"))
{
var info = document.Information;
Console.WriteLine($"Title: {info.Title}");
Console.WriteLine($"Author: {info.Author}");
Console.WriteLine($"Subject: {info.Subject}");
Console.WriteLine($"Creator: {info.Creator}");
Console.WriteLine($"Producer: {info.Producer}");
Console.WriteLine($"Number of Pages: {document.NumberOfPages}");
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comAfter (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("input.pdf");
var info = pdf.MetaData;
Console.WriteLine($"Title: {info.Title}");
Console.WriteLine($"Author: {info.Author}");
Console.WriteLine($"Subject: {info.Subject}");
Console.WriteLine($"Creator: {info.Creator}");
Console.WriteLine($"Producer: {info.Producer}");
Console.WriteLine($"Number of Pages: {pdf.PageCount}");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("input.pdf");
var info = pdf.MetaData;
Console.WriteLine($"Title: {info.Title}");
Console.WriteLine($"Author: {info.Author}");
Console.WriteLine($"Subject: {info.Subject}");
Console.WriteLine($"Creator: {info.Creator}");
Console.WriteLine($"Producer: {info.Producer}");
Console.WriteLine($"Number of Pages: {pdf.PageCount}");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com這兩個函式庫都以幾乎相同的模式提供元資料存取。PdfPig透過 document.Information 存取元資料,並透過<編碼>document.NumberOfPages</編碼存取頁數。IronPDF使用 pdf.MetaData 表示元資料,使用<編碼>pdf.PageCount</編碼表示頁數。
轉換過程非常簡單:將 PdfDocument.Open() 替換為 PdfDocument.FromFile(), document.Information 替換為 pdf.MetaData,<編碼>document.NumberOfPages</編碼替換為 pdf.PageCount. 移除 using 語句包裝,因為IronPDF並不需要。
關鍵遷移注意事項
頁面索引變更
PdfPig 使用基於 1 的索引; IronPdf 使用基於 0:
// PdfPig:1 基於indexing
var firstPage = document.GetPage(1); // First page
// IronPDF:基於 0indexing
var firstPage = pdf.Pages[0]; // First page
// Migration helper
int pdfPigIndex = 1;
int ironPdfIndex = pdfPigIndex - 1;// PdfPig:1 基於indexing
var firstPage = document.GetPage(1); // First page
// IronPDF:基於 0indexing
var firstPage = pdf.Pages[0]; // First page
// Migration helper
int pdfPigIndex = 1;
int ironPdfIndex = pdfPigIndex - 1;IRON VB CONVERTER ERROR developers@ironsoftware.com不需要使用說明
// PdfPig: Requires using for disposal
using (var document = PdfDocument.Open("input.pdf"))
{
// ...
}
// IronPDF: No using required (but can use for cleanup)
var pdf = PdfDocument.FromFile("input.pdf");
// ...
// pdf.Dispose(); // Optional// PdfPig: Requires using for disposal
using (var document = PdfDocument.Open("input.pdf"))
{
// ...
}
// IronPDF: No using required (but can use for cleanup)
var pdf = PdfDocument.FromFile("input.pdf");
// ...
// pdf.Dispose(); // OptionalIRON VB CONVERTER ERROR developers@ironsoftware.com文件載入變更
// PdfPig: PdfDocument.Open()
using (var document = PdfDocument.Open("input.pdf"))
// IronPDF: PdfDocument.FromFile()
var pdf = PdfDocument.FromFile("input.pdf");// PdfPig: PdfDocument.Open()
using (var document = PdfDocument.Open("input.pdf"))
// IronPDF: PdfDocument.FromFile()
var pdf = PdfDocument.FromFile("input.pdf");IRON VB CONVERTER ERROR developers@ironsoftware.com元資料屬性名稱變更
// PdfPig: document.Information
var info = document.Information;
// IronPDF: pdf.MetaData
var info = pdf.MetaData;// PdfPig: document.Information
var info = document.Information;
// IronPDF: pdf.MetaData
var info = pdf.MetaData;IRON VB CONVERTER ERROR developers@ironsoftware.com頁數特性變更
// PdfPig: document.NumberOfPages
Console.WriteLine($"Pages: {document.NumberOfPages}");
// IronPDF: pdf.PageCount
Console.WriteLine($"Pages: {pdf.PageCount}");// PdfPig: document.NumberOfPages
Console.WriteLine($"Pages: {document.NumberOfPages}");
// IronPDF: pdf.PageCount
Console.WriteLine($"Pages: {pdf.PageCount}");IRON VB CONVERTER ERROR developers@ironsoftware.com遷移後的新功能
轉移到IronPDF之後,您將獲得PdfPig無法提供的功能:
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水印。
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數位簽名
var signature = new PdfSignature("certificate.pfx", "password")
{
SigningContact = "support@company.com",
SigningReason = "Document Approval"
};
pdf.Sign(signature);var signature = new PdfSignature("certificate.pfx", "password")
{
SigningContact = "support@company.com",
SigningReason = "Document Approval"
};
pdf.Sign(signature);IRON VB CONVERTER ERROR developers@ironsoftware.com功能比較摘要
| 特點 | PdfPig | IronPDF |
|---|---|---|
| 文字擷取 | ✓ | ✓ |
| 元資料存取 | ✓ | ✓ |
| 圖片擷取 | ✓ | ✓ |
| PDF 製作 | 限額 | ✓ |
| HTML 至 PDF | ✗ | ✓ |
| URL 至 PDF | ✗ | ✓ |
| 合併 PDF | ✗ | ✓ |
| 分割 PDF | ✗ | ✓ |
| 水印 | ✗ | ✓ |
| 表格填寫 | ✗ | ✓ |
| 密碼保護 | ✗ | ✓ |
| 數位簽名 | ✗ | ✓ |
| 字詞位置資料 | ✓ | ✗ |
遷移清單
預遷移
- [ ] 清查所有PdfPig在程式碼庫中的使用情況
- [ ] 確認是否需要字詞層級的位置資料(考慮混合方式)
- [ ] 注意所有的頁面索引引用(需要將以 1 為基礎轉換為以 0 為基礎)
- [ ] 計劃IronPDF授權金鑰的儲存(建議使用環境變數)
- [ ] 先使用 IronPdf 試用授權進行測試
套件變更
- [ ] 移除
PdfPigNuGet 套件:dotnet remove package PdfPig - [ ] 安裝
IronPDFNuGet 套件:dotnet add package IronPdf。
程式碼變更
- [ ] 更新命名空間匯入 (
using UglyToad.PdfPig;→using IronPdf;) - [ ] 使用
PdfDocument.FromFile()取代PdfDocument.Open()。 - [ ] 將
document.Information替換為pdf.MetaData - [ ] 將<編碼>document.NumberOfPages</編碼替換為
pdf.PageCount - [將頁面索引從以 1 為基礎轉換為以 0 為基礎
- [ ] 移除
using語句(可選,IronPDF 並不需要) - [ ] 在應用程式啟動時加入 IronPdf 授權金鑰
後遷移
- [ ] 測試文字擷取輸出是否符合預期
- [ ] 測試所有 PDF 生成情境
- [ ] 必要時增加新功能(合併、水印、安全性
- [如果要部署到 Linux,請安裝 Linux 的相依性
結論
從PdfPig遷移到IronPDF可將您的 PDF 功能從純閱讀擴展為完整的 PDF 生命週期解決方案。PdfPig在其閱讀和提取領域表現突出,而IronPDF則在多功能性和全面 PDF 管理方面遙遙領先。
本次轉換的主要變更如下 1.文件載入:PdfDocument.Open() → PdfDocument.FromFile() 2.元資料存取:document.Information → pdf.MetaData. 3.頁數:document.NumberOfPages→pdf.PageCount。 4.頁面索引:基於 1 → 基於 0 5.處理模式:必填 using → 選填 6.新功能:HTML 至 PDF、PDF 合併、水印、安全性、數位簽署等功能
PdfPig 和IronPDF之間的選擇主要取決於專案的需求。 如果您的主要需求是具有穩固的擷取與閱讀能力,並擁有符合成本效益的開放原始碼授權許可,請使用 PdfPig。 如果您需要全面的 PDF 生命週期支援,包括 HTML 到 PDF 的轉換,而且您的專案需要強大的 PDF 建立和編輯功能,並有專業的支援,請使用 IronPDF。






