IRONSOFTWAREHOME
影片

在 ASP.NET Core MVC 中使用 IronPDF 將 CSHTML 轉換為 PDF

Curtis Chau
Curtis Chau
Updated: 2026年7月19日

從PDFView4NET遷移到IronPDF將您的PDF工作流程從WinForms/WPF查看元件轉變為無頭的PDF生成和操作程式庫。 本指南提供逐步遷移路徑,可實現伺服器端處理、Web應用程式支援以及超出PDFView4NET的查看/渲染/列印範圍的更廣泛PDF生命週期管理。

為什麼從PDFView4NET遷移到IronPDF

了解PDFView4NET

PDFView4NET(O2 Solutions,o2sol.com)是一個適用於WinForms和WPF應用程式的查看/渲染/列印工具包。 它以兩個NuGet封裝形式提供——O2S.Components.PDFView4NET.WPF——並包括其自己的PDF渲染引擎。O2 Solutions出售一個單獨的程式庫PDF4NET用於程式化生成/操作; 本指南僅涵蓋PDFView4NET。

需要生成PDF、HTML轉PDF渲染或伺服器端工作流的團隊通常會將PDFView4NET與其他程式庫搭配使用,或直接遷移到像IronPDF這樣的工具包,涵蓋生成和操作以及無頭部署場景。

查看 / 渲染 / 列印範圍

PDFView4NET圍繞顯示、渲染和列印PDF以及註釋和表單填寫構建。 遷移的常見原因:

  1. **著重查看/渲染/列印:**PDFView4NET載入現有PDF以供顯示、列印或圖像渲染。 它不會從HTML或URL生成PDF。

  2. **UI框架依賴性:**以WinForms和WPF版本分發; 兩者都針對Windows桌面,這限制了在控制台工作者或伺服器端主機上的使用。

  3. 無HTML轉PDF:O2S.Components.PDFView4NET中不存在。

  4. **操作有限:**操作集中在註釋和表單欄位上,而不是完整內容創作。

  5. **無Linux/Docker/伺服器路徑:**該工具包僅通過WinForms/WPF支援Windows,並不設計用於Linux上的ASP.NET主機或容器工作負載。

  6. **活躍,但範圍狹隘:**O2 Solutions仍然提供版本; 產品得到維護,但其範圍有意地狹窄。

PDFView4NET與IronPDF比較

功能PDFView4NETIronPDF
主要重點PDF查看完整PDF解決方案(建立、查看、編輯)
需要UI框架WinForms,WPFNone
PDF建立
PDF 操作有限(註釋)
伺服器端不支持完全支援
Web應用程式
控制台應用程式有限完全支援
Azure/Docker
HTML 到 PDF
跨平台環境
整合便利性

IronPDF涵蓋PDF的建立、操作和渲染,超越PDFView4NET的查看/渲染/列印範圍,解決超出查看/渲染/列印範圍的需求。

IronPDF還是與環境無關的——它可以運行在Windows、Linux、macOS、Docker和Azure上的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包變更

<!-- Remove PDFView4NET (the actual NuGet IDs are split by UI framework) -->
<PackageReference Include="O2S.Components.PDFView4NET.Win" Version="*" Remove />
<!-- or for WPF: O2S.Components.PDFView4NET.WPF -->

<!-- AddIronPDF-->
<PackageReference Include="IronPdf" Version="*" />
XML

或透過CLI:

dotnet remove package O2S.Components.PDFView4NET.Win
# (use O2S.Components.PDFView4NET.WPF for theWPF edition)
dotnet add package IronPdf
SHELL

授權配置

// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

完整API參考

名稱空間變更

// Before: PDFView4NET
using O2S.Components.PDFView4NET;

// After: IronPDF
using IronPdf;

核心API對應

PDFView4NETIronPDF
new PDFDocument(); doc.Load(path)PdfDocument.FromFile(path)
new PDFDocument(); doc.Load(stream)PdfDocument.FromStream(stream)
document.Pages[index]pdf.Pages[index]
document.PageCountpdf.PageCount
document.Print(...)pdf.Print()
document.Close()pdf.Dispose()
在PDFView4NET中不可用ChromePdfRenderer (HTML轉PDF)
在PDFView4NET中不可用PdfDocument.Merge()
在PDFView4NET中不可用pdf.ApplyWatermark()
document.SecurityManagerpdf.SecuritySettings

程式碼遷移範例

範例1:URL轉PDF

之前(PDFView4NET):

// NuGet: Install-Package O2S.Components.PDFView4NET.Win
using O2S.Components.PDFView4NET;
using System;

class Program
{
    static void Main()
    {
        // PDFView4NET cannot fetch a URL and emit a PDF; it can only consume one.
        PDFDocument document = new PDFDocument();
        document.Load("input.pdf");
        Console.WriteLine($"Loaded {document.PageCount} page(s) for view/print.");
        document.Close();
    }
}

之後(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");
    }
}

PDFView4NET沒有HTML/URL渲染介面——O2S.Components.PDFView4NET中不存在,因此URL必須先通過其他工具渲染為PDF,然後載入以供查看/列印。 IronPDF使用單一SaveAs() save。 查看更多HTML到PDF文件以獲得完整的範例。

範例2:HTML字串轉PDF

之前(PDFView4NET):

// NuGet: Install-Package O2S.Components.PDFView4NET.Win
using O2S.Components.PDFView4NET;
using System;

class Program
{
    static void Main()
    {
        // The HTML string cannot be rendered by PDFView4NET. Assume an upstream
        // tool produced "document.pdf"; PDFView4NET can then display or print it.
        PDFDocument document = new PDFDocument();
        document.Load("document.pdf");
        Console.WriteLine($"Document ready for viewing — {document.PageCount} page(s).");
        document.Close();
    }
}

之後(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");
    }
}

O2S.Components.PDFView4NET中不存在,因此HTML字串必須先作為PDF產出然後載入到查看器中。 IronPDF直接通過PdfDocument。 在我們的教程中了解更多。

範例3:從PDF中提取文字

之前(PDFView4NET):

// NuGet: Install-Package O2S.Components.PDFView4NET.Win
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();
            document.Load(fs);
            string text = "";
            for (int i = 0; i < document.PageCount; i++)
            {
                text += document.Pages[i].ExtractText();
            }
            Console.WriteLine(text);
            document.Close();
        }
    }
}

之後(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);
    }
}

此範例突顯出顯著的API差異。 PDFView4NET需要建立一個Pages[i].ExtractText()以獲得每頁內容。

IronPDF大幅簡化這一過程:ExtractAllText()從所有頁面提取文字,僅需一次方法呼叫。 無需手動流管理,無需迴圈,無需字串連接——只需兩行程式碼。


關鍵遷移注意事項

HTML渲染介面

PDFView4NET沒有HTML轉PDF API。 IronPDF引入ChromePdfRenderer用於HTML/URL輸入:

// IronPDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
// or: renderer.RenderUrlAsPdf(url);
pdf.SaveAs("output.pdf");

文件載入更改

// PDFView4NET: instantiate then Load(path) or Load(stream)
PDFDocument document = new PDFDocument();
document.Load("document.pdf");

// IronPDF: Direct file path
var pdf = PdfDocument.FromFile("document.pdf");

頁面存取變更

// PDFView4NET: document.PageCount and document.Pages[i]
for (int i = 0; i < document.PageCount; i++)
{
    document.Pages[i].ExtractText();
}

// IronPDF: pdf.PageCount and Pages[i] or ExtractAllText()
string text = pdf.ExtractAllText();
// Or per-page: pdf.ExtractTextFromPage(0);

保存方法更改

// PDFView4NET has no save-from-HTML path; saving applies after edits on a loaded document.
// IronPDF: SaveAs()
pdf.SaveAs("output.pdf");

遷移後的新能力

遷移到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");

使用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.SecuritySettings.OwnerPassword = "owner123";
pdf.SecuritySettings.UserPassword = "user456";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SaveAs("protected.pdf");

表單填寫

var pdf = PdfDocument.FromFile("form.pdf");
pdf.Form.FindFormField("FirstName").Value = "John";
pdf.Form.FindFormField("LastName").Value = "Doe";
pdf.SaveAs("filled_form.pdf");

伺服器端處理

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");
}

功能比較總結

功能PDFView4NETIronPDF
查看PDF是(UI)否(用查看器)
載入PDF
保存PDF有限
HTML轉PDF
URL到PDF
合併PDF
拆分PDF有限
浮水印
頁眉/頁腳
密碼保護
數位簽名
文字提取有限
填寫表單有限
WinForms
WPF
控制台有限
ASP.NET
Azure
Docker

遷移檢查表

遷移前

  • 確定查看需求(確定IronPDF的功能是否可以替代基於UI的PDF查看)
  • 文件列印工作流
  • 列出PDF操作需求
  • 視需要計劃查看器替換(IronPDF專注於生成/操作)
  • 獲取IronPDF授權金鑰來自ironpdf.com

套件變更

  • 移除.WPF)NuGet包
  • 安裝dotnet add package IronPdf

程式碼變更

  • 更新名稱空間導入(using O2S.Components.PDFView4NET;using IronPdf;
  • 引入ChromePdfRenderer用於所有HTML或URL輸入(無PDFView4NET等效項)
  • 替換new PDFDocument(); document.Load(path) with PdfDocument.FromFile(path)
  • 替換new PDFDocument(); document.Load(stream) with PdfDocument.FromStream(stream)
  • 替換手動for (int i = 0; i < document.PageCount; i++) (or pdf.ExtractTextFromPage(i)
  • using區塊)
  • 在應用程式啟動時新增授權初始化

遷移後

  • 測試PDF載入和保存
  • 驗證文字提取功能
  • 測試 HTML 到 PDF 的轉換
  • 驗證伺服器部署是否正常工作(新功能)
  • 視需要測試跨平台(新功能)
  • 如果僅伺服器,移除UI特定的PDF程式碼

請注意: PDFView4NET是其相應所有者的註冊商標。 此網站與O2 Solutions無關、未獲得其認可或贊助。 所有產品名稱、標誌和品牌均為其各自所有者的財產。 比較僅供參考,反映撰寫時公開可用的資訊。
Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

...
閱讀更多

相關文章

Key in blue circle

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
預訂您的免費現場演示
Booking Badge

受到全球數百萬工程師的信任

Iron Software的客戶標誌
獲取您的無義務諮詢
填寫以下表格或電子郵件sales@ironsoftware.com
您的詳細資訊將始終保密
受到全球數百萬工程師的信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立