如何用 C# 从 PDFView4NET 迁移到 IronPDF
从PDFView4NET迁移到 IronPdf:完整的 C# 迁移指南
从PDFView4NET迁移到IronPDF可将您的 PDF 工作流程从注重 UI 的查看组件转变为全面的 PDF 生成和操作库。 本指南提供了完整的分步迁移路径,可实现服务器端处理、网络应用程序支持以及PDFView4NET无法提供的完整 PDF 生命周期管理功能。
为什么要从PDFView4NET迁移到 IronPDF.
了解 PDFView4NET。
PDFView4NET 是主要关注 C# 中 PDF 查看功能的开发人员的热门选择。PDFView4NET为 Windows 窗体 (WinForms) 和 Windows Presentation Foundation (WPF) 应用程序量身定制了强大的 PDF 查看控件。 该库强调提供无缝的 PDF 浏览体验,使其成为桌面应用程序开发的首选。
尽管PDFView4NET有其优势,但它也有局限性,这可能会促使开发人员探索更全面的库,如 IronPDF,它提供了一个一体化的 PDF 解决方案,包括创建、查看和操作功能,而不局限于特定的 UI 组件。
仅限查看的限制
PDFView4NET 主要是WinForms和WPF应用程序的用户界面查看组件。 翻译的重点是显示 PDF,而不是创建或操作 PDF。 迁移的主要原因:
1.仅限查看的限制:PDFView4NET 设计用于查看,而非创建 PDF。
2.用户界面框架依赖性:需要WinForms或WPF上下文。 对WinForms或WPF环境的要求可能会限制在其他环境中的使用,如控制台应用程序或网络服务,PDFView4NET 不支持这些环境。
3.不能将 HTML 转换为 PDF:不能将 HTML 或 URL 转换为 PDF。 该库严格侧重于查看,没有创建或操作 PDF 文件的内置功能。
4.有限操作:与IronPDF的完整功能集相比,只能进行基本编辑。
5.无服务器端支持:无法在 Web 服务或天域功能中运行。
6.传统技术:开发活动较少,功能更新较新。
PDFView4NET与IronPDF对比
| 特征 | PDFView4NET | IronPDF |
|---|---|---|
| 主要关注点 | 查看 PDF | 完整的 PDF 解决方案(创建、查看、编辑) |
| 需要使用用户界面框架 | WinForms、WPF | 无 |
| PDF 创建 | 否 | 是 |
| PDF 操作 | 有限(注释) | 是 |
| 服务器端 | 不支持 | 全面支持 |
| 网络应用 | 否 | 是 |
| 控制台应用程序 | 有限的 | 全面支持 |
| Azure/Docker | 否 | 是 |
| HTML 到 PDF | 否 | 是 |
| 跨平台语境 | 否 | 是 |
| 易于集成 | 语言 | 高的 |
IronPdf 凭借其多功能性和全面的功能集脱颖而出,对于需要用 C# 处理 PDF 的整体方法的开发人员来说尤其具有吸引力。 该库支持 PDF 创建、查看、编辑等功能,解决的用例远远超出了PDFView4NET的查看功能。
对于计划在 2025 年和 2026 年之前采用 .NET 10 和 C# 14 的团队来说,IronPDF 提供了上下文独立性--它可以在不同的上下文中使用,包括网络应用程序、服务和控制台应用程序。 这种灵活性对于需要跨平台支持和不同部署场景的项目至关重要。
开始之前
前提条件
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(path)</代码 | <代码>PdfDocument.FromFile(路径)</代码 | 加载 PDF |
| <代码>PDFFile.Open(stream)</代码 | <代码>PdfDocument.FromStream(流)</代码 | 从流加载 |
| <代码>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通过 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");
}
}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 与 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 与基于方法的 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 | 是(用户界面) | 否(使用查看器) |
| 加载 PDF | 是 | 是 |
| 保存 PDF | 有限的 | 是 |
| HTML 至 PDF | 否 | 是 |
| URL 至 PDF | 否 | 是 |
| 合并 PDF | 否 | 是 |
| 拆分 PDF | 有限的 | 是 |
| 水印 | 否 | 是 |
| 页眉/页脚 | 否 | 是 |
| 密码保护 | 否 | 是 |
| 数字签名 | 否 | 是 |
| 文本提取 | 有限的 | 是 |
| 填写表格 | 有限的 | 是 |
| WinForms | 是 | 是 |
| WPF | 是 | 是 |
| 控制台 | 有限的 | 是 |
| ASP.NET | 否 | 是 |
| 天域 | 否 | 是 |
| 多克 | 否 | 是 |
迁移清单
迁移前
- [ ] 确定查看需求(确定IronPDF的功能是否可以取代基于 UI 的 PDF 查看功能)
- [文档打印工作流程
- [ ] 列出 PDF 操作需求
- [ ] 如果需要,计划更换查看器(IronPDF 专注于生成/操作)
- [ ] 从 ironpdf.com 获取IronPDF许可证密钥
软件包变更
- [ ] 删除
O2S.Components.PDFView4NETNuGet 软件包 - [ ] 安装
IronPDFNuGet 软件包:<代码>dotnet 添加软件包 IronPdf
代码更改
- [ ] 更新命名空间导入(
使用 O2S.Components.PDFView4NET;→使用 IronPDF;) - [ ] 将<代码>HtmlToPdfConverter</代码替换为
ChromePdfRenderer - [ ] 将
converter.HtmlContent+ConvertHtmlToPdf()替换为renderer.RenderHtmlAsPdf(html)。 - [ ] 将
converter.NavigateUri+ConvertHtmlToPdf()替换为renderer.RenderUrlAsPdf(url)。 - [ ] 将
converter.SavePdf()替换为pdf.SaveAs()。 - [ ] 将
PDFDocument(stream)替换为<代码>PdfDocument.FromFile(路径)</代码。 - [ ] 使用
pdf.ExtractAllText()替换手动页面循环提取。 - [ ] 在应用程序启动时添加许可证初始化
后迁移
- [ ] 测试 PDF 的加载和保存
- [ ] 验证文本提取功能
- [ ] 测试 HTML 到 PDF 的转换
- [ ] 验证服务器部署是否正常(新功能)
- [ ] 需要时进行跨平台测试(新功能)
- [如果仅用于服务器,则删除特定于用户界面的 PDF 代码
结论
虽然PDFView4NET仍然是开发人员在使用WinForms或WPF的 C# 桌面应用程序中查看 PDF 的理想选择,但由于其在更广泛的 PDF 功能方面存在局限性,可能需要IronPDF等替代工具。IronPDF在多功能性方面表现出色,通过直观的 API 和全面的支持,可满足多种情况下的复杂 PDF 操作。
本次迁移的主要变化有 1.架构:用户界面查看组件 → 完整的 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 的开发人员应评估其项目要求、预期增长和计划支持的环境,以选择最符合其需求的库。






