跳過到頁腳內容
遷移指南

如何在 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比較

特點PDFView4NETIronPDF
主要焦點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.*" />
XML

或透過 CLI:

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";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

核心 API 對應

PDFView4NETIronPDF筆記
<代碼>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.com
$vbLabelText   $csharpLabel

After (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.com
$vbLabelText   $csharpLabel

PDFView4NET 使用<編碼>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.com
$vbLabelText   $csharpLabel

After (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.com
$vbLabelText   $csharpLabel

PDFView4NET 使用 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.com
$vbLabelText   $csharpLabel

After (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
$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();
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

基於屬性的 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
$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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

功能比較摘要

特點PDFView4NETIronPDF
檢視 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.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 的轉換
  • [ ] 驗證伺服器部署是否運作正常 (新功能)
  • [ ] 需要時進行跨平台測試(新功能)
  • [如果僅限於伺服器,請移除特定於 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 整合的開發人員,應評估其專案需求、預期增長以及計劃支援的環境,以選擇最符合其需求的函式庫。

探索完整的 IronPdf文件教程範例,加速您的PDFView4NET遷移。

Curtis Chau
技術作家

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

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