MIGRATION GUIDES How to Migrate from PDFView4NET to IronPDF in C# Curtis Chau 發表日期:2026年2月1日 下載 IronPDF NuGet 下載 DLL 下載 Windows 安裝程式 開始免費試用 法學碩士副本 法學碩士副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 從 PDFView4NET 遷移到 IronPDF 會將您的 PDF 工作流程從以 UI 為中心的檢視元件轉變為全面的 PDF 產生和操作庫。 本指南提供了一條完整的、循序漸進的遷移路徑,實現了伺服器端處理、Web應用程式支援以及PDFView4NET無法提供的完整PDF生命週期管理功能。 為什麼要從 PDFView4NET 遷移到 IronPDF 了解 PDFView4NET PDFView4NET 是 C# 中主要專注於 PDF 檢視功能的開發人員的熱門選擇。 PDFView4NET 提供強大的 PDF 檢視控制項,專為 Windows Forms (WinForms) 和 Windows Presentation Foundation (WPF) 應用程式量身打造。 該庫專注於提供流暢的 PDF 查看體驗,使其成為桌面應用程式開發的首選方案。 儘管 PDFView4NET 具有諸多優勢,但它也存在一些局限性,可能會促使開發人員探索更全面的庫,例如 IronPDF,它提供了一個一體化的 PDF 解決方案,涵蓋了創建、查看和操作功能,而不受特定 UI 組件的限制。 僅查看限制 PDFView4NET 主要是一個用於 WinForms 和 WPF 應用程式的 UI 檢視元件。 它專注於顯示 PDF 文件,而不是建立或修改 PDF 文件。 遷移的主要原因: 1.僅查看限制: PDFView4NET 僅用於查看,不用於建立 PDF。 UI 框架依賴性:需要 WinForms 或 WPF 環境。 對 WinForms 或 WPF 環境的要求可能會限制其在其他上下文中的使用,例如控制台應用程式或 Web 服務,因為 PDFView4NET 不支援這些環境。 3.不支援 HTML 轉 PDF:無法將 HTML 或 URL 轉換為 PDF。 該庫嚴格專注於查看,沒有創建或操作 PDF 文件的內建功能。 4.操作有限:與 IronPDF 的完整功能集相比,僅提供基本編輯功能。 5.不支援伺服器端:無法在 Web 服務或 Azure Functions 中運作。 6.傳統技術:開發活動較少,現代功能更新較少。 PDFView4NET 與 IronPDF 的比較 特徵 PDFView4NET IronPDF 主要關注點 PDF檢視 完整的PDF解決方案(建立、檢視、編輯) 所需的 UI 框架 WinForms、WPF 沒有任何 PDF 建立 不 是的 PDF 處理 有限(註) 是的 伺服器端 不支援。 全力支持 Web應用程式 不 是的 控制台應用程式 有限的 全力支持 Azure/Docker 不 是的 HTML 轉 PDF 不 是的 跨平台上下文 不 是的 易於集成 中等的 高的 IronPDF 以其多功能性和全面的功能集脫穎而出,對於需要在 C# 中採用整體方法處理 PDF 的開發人員來說,它尤其具有吸引力。 該程式庫支援 PDF 的建立、檢視、編輯等功能,其應用場景遠遠超出了 PDFView4NET 的檢視功能。 對於計劃在 2025 年和 2026 年採用 .NET 10 和 C# 14 的團隊來說,IronPDF 提供了上下文獨立性——它可以在不同的上下文中使用,包括 Web 應用程式、服務和控制台應用程式。 這種靈活性對於需要跨平台支援和多樣化部署場景的專案至關重要。 開始之前 先決條件 .NET 環境: .NET Framework 4.6.2+ 或 .NET Core 3.1+ / .NET 5/6/7/8/9+ NuGet 存取權限:能夠安裝 NuGet 套件 IronPDF 許可證:請從ironpdf.com取得您的許可證密鑰。 NuGet 套件變更 <PackageReference Include="O2S.Components.PDFView4NET" Version="*" Remove /> <PackageReference Include="IronPdf" Version="2024.*" /> <PackageReference Include="O2S.Components.PDFView4NET" Version="*" Remove /> <PackageReference Include="IronPdf" Version="2024.*" /> XML 或透過命令列介面: dotnet remove package O2S.Components.PDFView4NET dotnet add package IronPdf dotnet remove package O2S.Components.PDFView4NET 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"; $vbLabelText $csharpLabel 完整 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; $vbLabelText $csharpLabel 核心 API 映射 PDFView4NET IronPDF 筆記 PDFFile.Open(path) 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"); } } $vbLabelText $csharpLabel (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"); } } $vbLabelText $csharpLabel PDFView4NET 使用HtmlToPdfConverter ,並將NavigateUri屬性設為Uri對象,然後呼叫ConvertHtmlToPdf() ,再SavePdf() 。 IronPDF 將其簡化為一個帶有RenderUrlAsPdf()的ChromePdfRenderer ,它直接接受一個字串 URL,傳回一個PdfDocument ,您可以使用SaveAs()來儲存它。 IronPDF 的方法提供了更簡潔的語法和與現代 .NET 應用程式更好的整合。 請參閱HTML 轉 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"); } } $vbLabelText $csharpLabel (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"); } } $vbLabelText $csharpLabel PDFView4NET 使用HtmlContent屬性設定 HTML 字串,然後需要呼叫ConvertHtmlToPdf()再呼叫SavePdf() 。 IronPDF 提供了一個更流暢的 API,其中RenderHtmlAsPdf()直接接受 HTML 字串並傳回一個PdfDocument 。 方法名稱更直觀: RenderHtmlAsPdf與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); } } } $vbLabelText $csharpLabel (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); } } $vbLabelText $csharpLabel 這個例子突顯了 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(); $vbLabelText $csharpLabel 基於屬性的 API 與基於方法的 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"); $vbLabelText $csharpLabel 文件載入變更 // 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"); $vbLabelText $csharpLabel 頁面存取權限變更 // 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); $vbLabelText $csharpLabel 儲存方法更改 // PDFView4NET: SavePdf() converter.SavePdf("output.pdf"); // IronPDF: SaveAs() pdf.SaveAs("output.pdf"); // PDFView4NET: SavePdf() converter.SavePdf("output.pdf"); // IronPDF: SaveAs() pdf.SaveAs("output.pdf"); $vbLabelText $csharpLabel 遷移後的新功能 遷移到 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"); $vbLabelText $csharpLabel 帶有 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"); $vbLabelText $csharpLabel 密碼保護 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"); $vbLabelText $csharpLabel 表格填寫 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"); $vbLabelText $csharpLabel 伺服器端處理 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"); } $vbLabelText $csharpLabel 功能對比總結 特徵 PDFView4NET IronPDF 查看PDF文件 是的(使用者介面) 否(使用檢視器) 載入PDF文件 是的 是的 儲存PDF文件 有限的 是的 HTML 轉 PDF 不 是的 PDF檔案的URL 不 是的 合併PDF 不 是的 拆分PDF 有限的 是的 水印 不 是的 頁首/頁尾 不 是的 密碼保護 不 是的 數位簽名 不 是的 文字擷取 有限的 是的 填寫表格 有限的 是的 WinForms 是的 是的 WPF 是的 是的 安慰 有限的 是的 ASP.NET 不 是的 Azure 不 是的 Docker 不 是的 遷移清單 遷移前 確定查看需求(確定 IronPDF 的功能是否可以取代基於 UI 的 PDF 檢視方式) 文件列印工作流程 列出 PDF 處理需求 如有需要,可更換計劃檢視器(IronPDF 主要專注於生成/操作) 從ironpdf.com取得 IronPDF 許可證金鑰 軟體包變更 刪除O2S.Components.PDFView4NET NuGet 套件 安裝IronPdf NuGet 套件: 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 的轉換 驗證伺服器部署是否正常運作(新增功能) 如有需要,請進行跨平台測試(新增功能) 如果僅伺服器端,則移除特定於使用者介面的 PDF 程式碼 Curtis Chau 立即與工程團隊聊天 技術撰稿人 Curtis Chau 擁有電腦科學學士學位(卡爾頓大學),專長於前端開發,精通 Node.js、TypeScript、JavaScript 和 React。Curtis 對製作直覺且美觀的使用者介面充滿熱情,他喜歡使用現代化的架構,並製作結構良好且視覺上吸引人的手冊。除了開發之外,Curtis 對物聯網 (IoT) 也有濃厚的興趣,他喜歡探索整合硬體與軟體的創新方式。在空閒時間,他喜歡玩遊戲和建立 Discord bots,將他對技術的熱愛與創意結合。 相關文章 發表日期 2026年2月1日 How to Migrate from ZetPDF to IronPDF in C# Master the migration from ZetPDF to IronPDF with this complete C# guide. Switch from a coordinate-based library to a modern HTML-to-PDF solution. Includes code examples for HTML conversion, merging PDFs, and removing PDFSharp dependencies. 閱讀更多 發表日期 2026年2月1日 How to Migrate from Scryber.Core to IronPDF in C# Master the migration from Scryber.Core to IronPDF with this complete C# guide. Switch from custom XML/HTML parsing to a modern Chromium renderer. Includes code examples for HTML conversion, URL rendering, and replacing proprietary bindings. 閱讀更多 發表日期 2026年2月1日 How to Migrate from XFINIUM.PDF to IronPDF in C# Master the migration from XFINIUM.PDF to IronPDF with this complete C# guide. Switch from manual coordinate-based positioning to declarative HTML/CSS rendering. Includes code examples for replacing graphics primitives and automatic layout. 閱讀更多 How to Migrate from PeachPDF to IronPDF in C#How to Migrate from PDFSharp to Iro...
發表日期 2026年2月1日 How to Migrate from ZetPDF to IronPDF in C# Master the migration from ZetPDF to IronPDF with this complete C# guide. Switch from a coordinate-based library to a modern HTML-to-PDF solution. Includes code examples for HTML conversion, merging PDFs, and removing PDFSharp dependencies. 閱讀更多
發表日期 2026年2月1日 How to Migrate from Scryber.Core to IronPDF in C# Master the migration from Scryber.Core to IronPDF with this complete C# guide. Switch from custom XML/HTML parsing to a modern Chromium renderer. Includes code examples for HTML conversion, URL rendering, and replacing proprietary bindings. 閱讀更多
發表日期 2026年2月1日 How to Migrate from XFINIUM.PDF to IronPDF in C# Master the migration from XFINIUM.PDF to IronPDF with this complete C# guide. Switch from manual coordinate-based positioning to declarative HTML/CSS rendering. Includes code examples for replacing graphics primitives and automatic layout. 閱讀更多