如何在 C# 中從 PDFView4NET 轉移到 IronPDF
從PDFView4NET轉移到 IronPDF:完整的 C# 遷移指南。
從PDFView4NET轉換到IronPDF可將您的 PDF 工作流程從以 UI 為重點的檢視元件轉換為全面的 PDF 產生與處理函式庫。 本指南提供完整的逐步遷移路徑,可實現伺服器端處理、Web 應用程式支援,以及PDFView4NET無法提供的完整 PDF 生命週期管理功能。
為什麼要從PDFView4NET轉移到 IronPDF?
瞭解 PDFView4NET。
PDFView4NET 是主要專注於 C# 中 PDF 檢視功能的開發人員的熱門選擇。PDFView4NET提供專為 Windows 窗體 (WinForms) 和 Windows Presentation Foundation (WPF) 應用程式量身打造的強大 PDF 檢視控制項。 圖書館強調提供無縫 PDF 檢視體驗,使其成為桌面應用程式開發的首選。
儘管PDFView4NET有其優點,但也有其限制,這可能會促使開發人員探索更全面的函式庫,例如 IronPDF,它提供了多合一的 PDF 解決方案,包含建立、檢視和操作功能,而不受限於特定的 UI 元件。
僅限於檢視的限制
PDFView4NET 主要是WinForms和WPF應用程式的 UI 檢視元件。 它著重於顯示 PDF,而非建立或操作 PDF。 遷移的主要原因:
1.僅限檢視的限制:PDFView4NET 是專為檢視而設計,而非建立 PDF。
2.UI 框架依賴性:需要WinForms或WPF上下文。 對WinForms或WPF環境的要求可能會限制在其他情境中的使用,例如控制台應用程式或 Web 服務,PDFView4NET 並不支援這些情境。
3.無法將 HTML 轉換為 PDF:無法將 HTML 或 URL 轉換為 PDF。 該函式庫嚴格著重於檢視,沒有建立或處理 PDF 檔案的內建功能。
4.有限操作:與IronPDF的完整功能集相比,屬於基本編輯。
5.無伺服器端支援:無法在 Web 服務或AzureFunctions 中執行。
6.Legacy Technology:較不活躍的開發和現代功能更新。
PDFView4NET與IronPDF比較
| 特點 | PDFView4NET | IronPDF |
|---|---|---|
| 主要焦點 | PDF 檢視 | 完整的 PDF 解決方案 (建立、檢視、編輯) |
| 需要UI 框架 | WinForms、WPF | 無 |
| PDF製作 | 無 | 是 |
| PDF 操作 | 有限 (註解) | 是 |
| 伺服器端 | 不支援 | 全面支援 |
| 網路應用程式 | 無 | 是 |
| 控制台應用程式 | 限額 | 全面支援 |
| Azure/Docker | 無 | 是 |
| HTML至PDF | 無 | 是 |
| 跨平台背景 | 無 | 是 |
| 容易整合。 | 語言 | 高的 |
IronPDF 以其多功能性和全面的功能集脫穎而出,對於需要以 C# 方式全面處理 PDF 的開發人員而言尤其具有吸引力。 該函式庫支援 PDF 的建立、檢視、編輯等功能,可處理的使用個案遠遠超過PDFView4NET的檢視功能。
對於計劃在 2025 年和 2026 年之前採用 .NET 10 和 C# 14 的團隊而言,IronPDF 提供了上下文獨立性--它可以在不同的上下文中使用,包括 Web 應用程式、服務和主控台應用程式。 這種靈活性對於需要跨平台支援和多樣化部署情境的專案而言至關重要。
開始之前
先決條件
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 套件變更
<!-- RemovePDFView4NET-->
<PackageReference Include="O2S.Components.PDFView4NET" Version="*" Remove />
<!-- AddIronPDF-->
<PackageReference Include="IronPdf" Version="2024.*" /><!-- RemovePDFView4NET-->
<PackageReference Include="O2S.Components.PDFView4NET" Version="*" Remove />
<!-- AddIronPDF-->
<PackageReference Include="IronPdf" Version="2024.*" />或透過 CLI:
dotnet remove package O2S.Components.PDFView4NET
dotnet add package IronPdfdotnet remove package O2S.Components.PDFView4NET
dotnet add package IronPdf授權組態
// 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完整的 API 參考資料
命名空間變更
// Before: PDFView4NET
using O2S.Components.PDFView4NET;
using O2S.Components.PDFView4NET.HtmlToPdf;
using O2S.Components.PDFView4NET.Printing;
// After: IronPDF
using IronPdf;// Before: PDFView4NET
using O2S.Components.PDFView4NET;
using O2S.Components.PDFView4NET.HtmlToPdf;
using O2S.Components.PDFView4NET.Printing;
// After: IronPDF
using IronPdf;IRON VB CONVERTER ERROR developers@ironsoftware.com核心 API 對應
| PDFView4NET | IronPDF | 筆記 |
|---|---|---|
| <代碼>PDFFile.Open(路徑)</代碼 | PdfDocument.FromFile(path) | 載入 PDF |
| <編碼>PDFFile.Open(stream)</編碼 | PdfDocument.FromStream(stream) | 從串流載入 |
| <代碼>pdfFile.GetPage(index)</代碼 | <編碼>pdf.Pages[index]</編碼 | 存取頁面 |
| <編碼>pdfFile.PageCount</編碼 | <編碼>pdf.PageCount</編碼 | 頁數 |
| <代碼>PDFPrintDocument</代碼 | <編碼>pdf.Print()</編碼 | 列印 PDF |
| <代碼>pdfFile.Close()</代碼 | <代碼>pdf.Dispose()</代碼 | 清理 |
| <編碼>HtmlToPdfConverter</編碼 | <代碼>ChromePdfRenderer</代碼 | HTML 至 PDF |
| 不適用 | <代碼>PdfDocument.Merge()</代碼 | 合併 PDF |
| 不適用 | <代碼>pdf.ApplyWatermark()</代碼 | 加入水印 |
| 不適用 | <編碼>pdf.SecuritySettings</編碼 | 密碼保護 |
程式碼遷移範例
範例 1:URL 到 PDF 的轉換
之前 (PDFView4NET):
// NuGet: Install-Package O2S.Components.PDFView4NET
using O2S.Components.PDFView4NET;
using O2S.Components.PDFView4NET.HtmlToPdf;
using System;
class Program
{
static void Main()
{
HtmlToPdfConverter converter = new HtmlToPdfConverter();
converter.NavigateUri = new Uri("https://example.com");
converter.ConvertHtmlToPdf();
converter.SavePdf("output.pdf");
}
}// NuGet: Install-Package O2S.Components.PDFView4NET
using O2S.Components.PDFView4NET;
using O2S.Components.PDFView4NET.HtmlToPdf;
using System;
class Program
{
static void Main()
{
HtmlToPdfConverter converter = new HtmlToPdfConverter();
converter.NavigateUri = new Uri("https://example.com");
converter.ConvertHtmlToPdf();
converter.SavePdf("output.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comAfter (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://example.com");
pdf.SaveAs("output.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://example.com");
pdf.SaveAs("output.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comPDFView4NET 使用<編碼>HtmlToPdfConverter</編碼並將 NavigateUri 屬性設定為 Uri 物件,接著呼叫 ConvertHtmlToPdf() 然後再呼叫 SavePdf() 。IronPDF將此簡化為單一的<代碼>ChromePdfRenderer</代碼與 RenderUrlAsPdf() 可直接接受字串 URL,返回一個 PdfDocument 並使用 SaveAs() 儲存。IronPDF的方法提供了更簡潔的語法,並能更好地與現代 .NET 應用程式整合。 請參閱 HTML to PDF 文件,以瞭解全面的範例。
範例 2:HTML 字串至 PDF 的轉換
之前 (PDFView4NET):
// NuGet: Install-Package O2S.Components.PDFView4NET
using O2S.Components.PDFView4NET;
using O2S.Components.PDFView4NET.HtmlToPdf;
using System;
class Program
{
static void Main()
{
string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
HtmlToPdfConverter converter = new HtmlToPdfConverter();
converter.HtmlContent = htmlContent;
converter.ConvertHtmlToPdf();
converter.SavePdf("document.pdf");
}
}// NuGet: Install-Package O2S.Components.PDFView4NET
using O2S.Components.PDFView4NET;
using O2S.Components.PDFView4NET.HtmlToPdf;
using System;
class Program
{
static void Main()
{
string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
HtmlToPdfConverter converter = new HtmlToPdfConverter();
converter.HtmlContent = htmlContent;
converter.ConvertHtmlToPdf();
converter.SavePdf("document.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comAfter (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("document.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("document.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comPDFView4NET 使用 HtmlContent 屬性來設定 HTML 字串,然後需呼叫 ConvertHtmlToPdf() 之後的 SavePdf() 。IronPDF提供了一個更流暢的 API,其中 RenderHtmlAsPdf() 直接接受 HTML 字串並返回一個 PdfDocument 。 方法名稱更加直觀:RenderHtmlAsPdf vs ConvertHtmlToPdf. 請參閱我們的 教學,瞭解更多資訊。
範例 3:從 PDF 擷取文字
之前 (PDFView4NET):
// NuGet: Install-Package O2S.Components.PDFView4NET
using O2S.Components.PDFView4NET;
using System;
using System.IO;
class Program
{
static void Main()
{
using (FileStream fs = File.OpenRead("document.pdf"))
{
PDFDocument document = new PDFDocument(fs);
string text = "";
for (int i = 0; i < document.Pages.Count; i++)
{
text += document.Pages[i].ExtractText();
}
Console.WriteLine(text);
}
}
}// NuGet: Install-Package O2S.Components.PDFView4NET
using O2S.Components.PDFView4NET;
using System;
using System.IO;
class Program
{
static void Main()
{
using (FileStream fs = File.OpenRead("document.pdf"))
{
PDFDocument document = new PDFDocument(fs);
string text = "";
for (int i = 0; i < document.Pages.Count; i++)
{
text += document.Pages[i].ExtractText();
}
Console.WriteLine(text);
}
}
}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("document.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("document.pdf");
string text = pdf.ExtractAllText();
Console.WriteLine(text);
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com本範例強調 API 的重大差異。PDFView4NET需要手動建立一個 FileStream ,將 PDFDocument 與串流實體化,然後循環 document.Pages.Count 並連結 Pages[i].ExtractText() 每頁。
IronPdf 大幅簡化了這方面的工作:PdfDocument.FromFile() 直接從路徑載入 PDF,而 ExtractAllText() 只需呼叫一個方法即可從所有頁面中提取文字。 不需要手動串流管理、不需要循環、不需要字串串接 - 只需要兩行程式碼。
關鍵遷移注意事項
轉換器類別變更
PDFView4NET 使用<編碼>HtmlToPdfConverter</編碼;IronPDF使用<代碼>ChromePdfRenderer</代碼:
// PDFView4NET
HtmlToPdfConverter converter = new HtmlToPdfConverter();
// IronPDF
var renderer = new ChromePdfRenderer();// PDFView4NET
HtmlToPdfConverter converter = new HtmlToPdfConverter();
// IronPDF
var renderer = new ChromePdfRenderer();IRON VB CONVERTER ERROR developers@ironsoftware.com基於屬性的 API vs 基於方法的 API
PDFView4NET 會在轉換前設定屬性:
// PDFView4NET: Set properties, then convert
converter.HtmlContent = htmlContent;
converter.NavigateUri = new Uri(url);
converter.ConvertHtmlToPdf();
converter.SavePdf("output.pdf");
// IronPDF: Method parameters with fluent API
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
var pdf = renderer.RenderUrlAsPdf(url);
pdf.SaveAs("output.pdf");// PDFView4NET: Set properties, then convert
converter.HtmlContent = htmlContent;
converter.NavigateUri = new Uri(url);
converter.ConvertHtmlToPdf();
converter.SavePdf("output.pdf");
// IronPDF: Method parameters with fluent API
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
var pdf = renderer.RenderUrlAsPdf(url);
pdf.SaveAs("output.pdf");IRON VB CONVERTER ERROR developers@ironsoftware.com文件載入變更
// PDFView4NET: Requires FileStream
using (FileStream fs = File.OpenRead("document.pdf"))
{
PDFDocument document = new PDFDocument(fs);
}
// IronPDF: Direct file path
var pdf = PdfDocument.FromFile("document.pdf");// PDFView4NET: Requires FileStream
using (FileStream fs = File.OpenRead("document.pdf"))
{
PDFDocument document = new PDFDocument(fs);
}
// IronPDF: Direct file path
var pdf = PdfDocument.FromFile("document.pdf");IRON VB CONVERTER ERROR developers@ironsoftware.com頁面存取變更
// PDFView4NET: document.Pages.Count and Pages[i]
for (int i = 0; i < document.Pages.Count; i++)
{
document.Pages[i].ExtractText();
}
// IronPDF: pdf.PageCount and Pages[i] or ExtractAllText()
string text = pdf.ExtractAllText();
// Or per-page: pdf.ExtractTextFromPage(0);// PDFView4NET: document.Pages.Count and Pages[i]
for (int i = 0; i < document.Pages.Count; i++)
{
document.Pages[i].ExtractText();
}
// IronPDF: pdf.PageCount and Pages[i] or ExtractAllText()
string text = pdf.ExtractAllText();
// Or per-page: pdf.ExtractTextFromPage(0);IRON VB CONVERTER ERROR developers@ironsoftware.com儲存方法變更
// PDFView4NET: SavePdf()
converter.SavePdf("output.pdf");
// IronPDF: SaveAs()
pdf.SaveAs("output.pdf");// PDFView4NET: SavePdf()
converter.SavePdf("output.pdf");
// IronPDF: SaveAs()
pdf.SaveAs("output.pdf");IRON VB CONVERTER ERROR developers@ironsoftware.com遷移後的新功能
轉移到IronPDF之後,您將獲得PDFView4NET無法提供的功能:
PDF 合併
var pdf1 = PdfDocument.FromFile("chapter1.pdf");
var pdf2 = PdfDocument.FromFile("chapter2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("complete_book.pdf");var pdf1 = PdfDocument.FromFile("chapter1.pdf");
var pdf2 = PdfDocument.FromFile("chapter2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("complete_book.pdf");IRON VB CONVERTER ERROR developers@ironsoftware.com使用 HTML 的水印
var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark(@"
<div style='
font-size: 72pt;
color: rgba(255, 0, 0, 0.2);
transform: rotate(-45deg);
'>
CONFIDENTIAL
</div>");
pdf.SaveAs("watermarked.pdf");var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark(@"
<div style='
font-size: 72pt;
color: rgba(255, 0, 0, 0.2);
transform: rotate(-45deg);
'>
CONFIDENTIAL
</div>");
pdf.SaveAs("watermarked.pdf");IRON VB CONVERTER ERROR developers@ironsoftware.com密碼保護
var pdf = PdfDocument.FromFile("document.pdf");
pdf.SecuritySettings.OwnerPassword = "owner123";
pdf.SecuritySettings.UserPassword = "user456";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SaveAs("protected.pdf");var pdf = PdfDocument.FromFile("document.pdf");
pdf.SecuritySettings.OwnerPassword = "owner123";
pdf.SecuritySettings.UserPassword = "user456";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SaveAs("protected.pdf");IRON VB CONVERTER ERROR developers@ironsoftware.com表格填寫
var pdf = PdfDocument.FromFile("form.pdf");
pdf.Form.GetFieldByName("FirstName").Value = "John";
pdf.Form.GetFieldByName("LastName").Value = "Doe";
pdf.SaveAs("filled_form.pdf");var pdf = PdfDocument.FromFile("form.pdf");
pdf.Form.GetFieldByName("FirstName").Value = "John";
pdf.Form.GetFieldByName("LastName").Value = "Doe";
pdf.SaveAs("filled_form.pdf");IRON VB CONVERTER ERROR developers@ironsoftware.com伺服器端處理
PDFView4NET 無法在伺服器環境中執行。 IronPdf 在這方面表現出色:
// ASP.NET Core
[HttpGet]
public IActionResult GeneratePdf()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(GetReportHtml());
return File(pdf.BinaryData, "application/pdf", "report.pdf");
}// ASP.NET Core
[HttpGet]
public IActionResult GeneratePdf()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(GetReportHtml());
return File(pdf.BinaryData, "application/pdf", "report.pdf");
}IRON VB CONVERTER ERROR developers@ironsoftware.com功能比較摘要
| 特點 | PDFView4NET | IronPDF |
|---|---|---|
| 檢視 PDF | 是 (UI) | 無(使用檢視器) |
| 載入 PDF | 是 | 是 |
| 儲存 PDF | 限額 | 是 |
| HTML 至 PDF | 無 | 是 |
| URL 至 PDF | 無 | 是 |
| 合併 PDF | 無 | 是 |
| 分割 PDF | 限額 | 是 |
| 水印 | 無 | 是 |
| 頁首/頁尾 | 無 | 是 |
| 密碼保護 | 無 | 是 |
| 數位簽名 | 無 | 是 |
| 文字擷取 | 限額 | 是 |
| 填寫表格 | 限額 | 是 |
| WinForms | 是 | 是 |
| WPF | 是 | 是 |
| 控制台 | 限額 | 是 |
| ASP.NET | 無 | 是 |
| Azure | 無 | 是 |
| Docker | 無 | 是 |
遷移清單
預遷移
- [ ] 確定檢視需求(確定IronPDF的功能是否可以取代基於 UI 的 PDF 檢視功能)
- [ ] 文件列印工作流程
- [ ] 列出 PDF 操作需求
- [ ] 如果需要,計劃更換檢視器(IronPDF 著重於生成/操作)
- [ ] 從 ironpdf.com 獲得IronPDF授權金鑰
套件變更
- [ ] 移除
O2S.Components.PDFView4NETNuGet 套件 - [ ] 安裝
IronPDFNuGet 套件:dotnet add package IronPdf。
程式碼變更
- [ ] 更新命名空間匯入 (
using O2S.Components.PDFView4NET;→using IronPDF;) - [ ] 將<編碼>HtmlToPdfConverter</編碼替換為
ChromePdfRenderer - [ ] 將
converter.HtmlContent+ConvertHtmlToPdf()替換為renderer.RenderHtmlAsPdf(html)。 - [ ] 將
converter.NavigateUri+ConvertHtmlToPdf()替換為renderer.RenderUrlAsPdf(url)。 - [將
converter.SavePdf()替換為pdf.SaveAs()。 - [ ] 將
PDFDocument(stream)替換為PdfDocument.FromFile(path)。 - [ ] 使用
pdf.ExtractAllText()取代手動頁面循環萃取 - [ ] 在應用程式啟動時加入授權初始化
後遷移
- [測試 PDF 的載入與儲存
- [ ] 驗證文字擷取功能
- [ ] 測試 HTML 至 PDF 的轉換
- [ ] 驗證伺服器部署是否運作正常 (新功能)
- [ ] 需要時進行跨平台測試(新功能)
- [如果僅限於伺服器,請移除特定於 UI 的 PDF 程式碼
結論
雖然PDFView4NET仍然是使用WinForms或WPF在 C# 桌面應用程式中檢視 PDF 的開發人員的強大選擇,但其在更廣泛的 PDF 功能上的限制可能需要 IronPdf 等替代品。IronPDF的優點在於其多功能性,可透過直覺的 API 和全面的支援,滿足多種情境下的複雜 PDF 作業。
本次轉換的主要變更如下 1.架構:UI 檢視元件 → 完整 PDF 生命週期函式庫 2.轉換器類別:HtmlToPdfConverter →<代碼>ChromePdfRenderer</代碼。 3.HTML 轉換:HtmlContent + ConvertHtmlToPdf() → RenderHtmlAsPdf(html) 4.URL 轉換:NavigateUri + ConvertHtmlToPdf() → RenderUrlAsPdf(url) 5.文件載入:PDFDocument(stream) → PdfDocument.FromFile(path) 6.文字萃取:手動頁面循環 → ExtractAllText() 7.儲存:SavePdf() → SaveAs() 8.平台支援:僅限桌上型電腦 → 伺服器、Web、主控台、Azure、Docker 9.新功能:PDF 合併、水印、安全性、填表等功能
考慮 PDF 整合的開發人員,應評估其專案需求、預期增長以及計劃支援的環境,以選擇最符合其需求的函式庫。






