如何用 C# 从 PdfiumViewer 迁移到 IronPDF
从PdfiumViewer迁移到IronPDF可将您的 .NET PDF 工作流程从具有本地二进制依赖关系的仅用于 Windows 窗体查看的库迁移到全面的 PDF 解决方案,该解决方案可在所有 .NET 应用程序类型中处理创建、操作、文本提取和渲染。本指南提供了一个完整的、循序渐进的迁移路径,消除了平台限制,同时增加了PdfiumViewer无法提供的功能。
为什么从IronPDF迁移到 IronPDF?
了解 PdfiumViewer。
PdfiumViewer 是 PDFium 的 .NET 封装程序,PDFium 是 Google Chrome 浏览器中使用的 PDF 渲染引擎。 它提供了一个简单而强大的解决方案,可将 PDF 查看直接集成到 Windows 窗体应用程序中,提供高性能、高保真的 PDF 渲染功能。
但是,请务必记住,PdfiumViewer 只是一个查看器。 它不支持 PDF 的创建、编辑或操作,这可能会限制对查看功能有更高要求的应用程序。 此外,其不确定的维护状态也会给生产应用程序带来风险--其持续开发和维护存在一定的不确定性,这可能会成为长期项目的顾虑。
PdfiumViewer的关键限制
1.仅查看功能:无法从 HTML、图像或通过编程方式创建 PDF。PdfiumViewer的功能仅限于查看 PDF,与IronPDF等库不同,它不支持 PDF 创建、编辑、合并或其他操作功能。
- Windows Forms 特有:该库专注于 Windows Forms 应用程序,不提供对其他用户界面框架的支持。
3.不支持 PDF 操作:无法合并、拆分或修改 PDF 内容。
4.本地二进制依赖项:需要特定于平台的 PDFium 二进制文件(x86 和 x64 pdfium.dll 文件)。
5.维护不确定:更新有限,长期支持不明确。
6.无文本提取:PdfiumViewer没有内置的文本提取功能——您需要使用 OCR 或其他库。 它只能将页面呈现为图像。
7.不支持 HTML 转 PDF:PdfiumViewer主要是一个 PDF 查看器/渲染器,而不是生成器。 不能直接将 HTML 转换为 PDF。 您需要使用另一个库,如 wkhtmltopdf 或类似库。
8.无页眉/页脚:无法添加页码或重复内容。
9.无水印:无法在带有叠加层的文档上加盖水印。
10.无安全功能:无法加密或密码保护 PDF 文件。
PdfiumViewer与IronPDF对比
| 方面 | PdfiumViewer | IronPDF |
|---|---|---|
| 主要关注点 | WinForms PDF 查看器 | 完整的 PDF 解决方案 |
| 许可 | 阿帕奇 2.0 | 商业翻译 |
| PDF 创建 | ✗ | ✓ (HTML、URL、图片) |
| PDF 操作 | ✗ | ✓(合并、拆分、编辑) |
| HTML 到 PDF | ✗ | ✓(Chromium 引擎) |
| 文本提取 | ✗ | ✓ |
| 水印。 | ✗ | ✓ |
| 页眉/页脚 | ✗ | ✓ |
| 安全性 | ✗ | ✓ |
| 内置浏览器 | ✓ | ✗(侧重于后端) |
| 平台支持 | 仅限 Windows 窗体 | 控制台、网络、桌面 |
| 框架支持 | .NET Framework | .NET Framework, Core, 5+ |
| 维护 | 不确定 | 活跃 |
对于计划在 2025 年和 2026 年之前采用 .NET 10 和 C# 14 的团队来说,IronPDF 提供了一个全面的、积极维护的基础,适用于所有 .NET 应用程序类型,消除了 Windows 窗体限制和本地二进制的复杂性。
开始之前
前提条件
- .NET 环境:.NET Framework4.6.2+ 或 .NET Core 3.1+ / .NET 5/6/7/8/9+
- NuGet 访问权限:能够安装 NuGet 包
- IronPDF 许可证:请从ironpdf.com获取您的许可证密钥。
NuGet 软件包变更
# RemovePdfiumViewerpackages
dotnet remove package PdfiumViewer
dotnet remove package PdfiumViewer.Native.x86.v8-xfa
dotnet remove package PdfiumViewer.Native.x64.v8-xfa
# Install IronPDF
dotnet add package IronPdf
# RemovePdfiumViewerpackages
dotnet remove package PdfiumViewer
dotnet remove package PdfiumViewer.Native.x86.v8-xfa
dotnet remove package PdfiumViewer.Native.x64.v8-xfa
# Install IronPDF
dotnet add package IronPdf
许可配置
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup (Program.vb or Startup.vb)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
确定PdfiumViewer的用法
# FindPdfiumViewerusage
grep -r "PdfiumViewer\|PdfViewer\|PdfDocument\.Load" --include="*.cs" .
# Find native binary references
grep -r "pdfium\.dll\|Native\.x86\|Native\.x64" --include="*.csproj" .
# Find viewer control usage
grep -r "PdfViewer" --include="*.cs" --include="*.Designer.cs" .
# FindPdfiumViewerusage
grep -r "PdfiumViewer\|PdfViewer\|PdfDocument\.Load" --include="*.cs" .
# Find native binary references
grep -r "pdfium\.dll\|Native\.x86\|Native\.x64" --include="*.csproj" .
# Find viewer control usage
grep -r "PdfViewer" --include="*.cs" --include="*.Designer.cs" .
完整的 API 参考
命名空间变更
// PdfiumViewer
using PdfiumViewer;
// IronPDF
using IronPdf;
using IronPdf.Rendering;
using IronPdf.Editing;
// PdfiumViewer
using PdfiumViewer;
// IronPDF
using IronPdf;
using IronPdf.Rendering;
using IronPdf.Editing;
Imports PdfiumViewer
Imports IronPdf
Imports IronPdf.Rendering
Imports IronPdf.Editing
核心类映射
| PdfiumViewer | IronPDF |
|---|---|
PdfDocument |
PdfDocument |
PdfViewer |
(无对等词) |
PdfRenderer |
ChromePdfRenderer |
| (不可用)_ | HtmlHeaderFooter |
文档加载映射
| PdfiumViewer | IronPDF |
|---|---|
PdfDocument.Load(path) |
PdfDocument.FromFile(path) |
PdfDocument.Load(stream) |
PdfDocument.FromStream(stream) |
PdfDocument.Load(bytes) |
PdfDocument.FromBinaryData(bytes) |
文档属性映射
| PdfiumViewer | IronPDF |
|---|---|
document.PageCount |
document.PageCount |
document.PageSizes |
document.Pages[i].Width/Height |
document.GetPageSize(index) |
document.Pages[index].Width/Height |
页面渲染映射
| PdfiumViewer | IronPDF |
|---|---|
document.Render(pageIndex, dpiX, dpiY, forPrinting) |
pdf.ToBitmap(pageIndex) |
document.Render(pageIndex, width, height, dpiX, dpiY, flags) |
pdf.RasterizeToImageFiles(path, dpi) |
保存文档映射
| PdfiumViewer | IronPDF |
|---|---|
document.Save(path) |
pdf.SaveAs(path) |
document.Save(stream) |
pdf.Stream |
| (不可用)_ | pdf.BinaryData |
PdfiumViewer中不提供的新功能
| IronPDF 特点 | 说明 |
|---|---|
pdf.ExtractAllText() |
从所有页面提取文本 |
pdf.ExtractTextFromPage(index) |
从特定页面提取文本 |
ChromePdfRenderer.RenderHtmlAsPdf() |
从 HTML 创建 |
ChromePdfRenderer.RenderUrlAsPdf() |
从 URL 创建 |
PdfDocument.Merge() |
合并 PDF |
pdf.CopyPages() |
提取页面 |
pdf.RemovePages() |
删除页面 |
pdf.ApplyWatermark() |
添加水印 |
pdf.AddHtmlHeaders() |
添加页眉 |
pdf.AddHtmlFooters() |
添加页脚 |
pdf.SecuritySettings |
密码保护 |
pdf.Form |
表格填写 |
代码迁移示例
示例 1:从 PDF 中提取文本
之前 (PdfiumViewer):
// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System;
using System.Text;
string pdfPath = "document.pdf";
// PDFiumViewer has limited text extraction capabilities
// It's primarily designed for rendering, not text extraction
using (var document = PdfDocument.Load(pdfPath))
{
int pageCount = document.PageCount;
Console.WriteLine($"Total pages: {pageCount}");
// PDFiumViewer does not have built-in text extraction
// You would need to use OCR or another library
// It can only render pages as images
for (int i = 0; i < pageCount; i++)
{
var pageImage = document.Render(i, 96, 96, false);
Console.WriteLine($"Rendered page {i + 1}");
}
}
// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System;
using System.Text;
string pdfPath = "document.pdf";
// PDFiumViewer has limited text extraction capabilities
// It's primarily designed for rendering, not text extraction
using (var document = PdfDocument.Load(pdfPath))
{
int pageCount = document.PageCount;
Console.WriteLine($"Total pages: {pageCount}");
// PDFiumViewer does not have built-in text extraction
// You would need to use OCR or another library
// It can only render pages as images
for (int i = 0; i < pageCount; i++)
{
var pageImage = document.Render(i, 96, 96, false);
Console.WriteLine($"Rendered page {i + 1}");
}
}
Imports PdfiumViewer
Imports System
Imports System.Text
Dim pdfPath As String = "document.pdf"
' PDFiumViewer has limited text extraction capabilities
' It's primarily designed for rendering, not text extraction
Using document = PdfDocument.Load(pdfPath)
Dim pageCount As Integer = document.PageCount
Console.WriteLine($"Total pages: {pageCount}")
' PDFiumViewer does not have built-in text extraction
' You would need to use OCR or another library
' It can only render pages as images
For i As Integer = 0 To pageCount - 1
Dim pageImage = document.Render(i, 96, 96, False)
Console.WriteLine($"Rendered page {i + 1}")
Next
End Using
After (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
string pdfPath = "document.pdf";
// Open and extract text from PDF
PdfDocument pdf = PdfDocument.FromFile(pdfPath);
// Extract text from all pages
string allText = pdf.ExtractAllText();
Console.WriteLine("Extracted Text:");
Console.WriteLine(allText);
// Extract text from specific page
string pageText = pdf.ExtractTextFromPage(0);
Console.WriteLine($"\nFirst page text: {pageText}");
Console.WriteLine($"\nTotal pages: {pdf.PageCount}");
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
string pdfPath = "document.pdf";
// Open and extract text from PDF
PdfDocument pdf = PdfDocument.FromFile(pdfPath);
// Extract text from all pages
string allText = pdf.ExtractAllText();
Console.WriteLine("Extracted Text:");
Console.WriteLine(allText);
// Extract text from specific page
string pageText = pdf.ExtractTextFromPage(0);
Console.WriteLine($"\nFirst page text: {pageText}");
Console.WriteLine($"\nTotal pages: {pdf.PageCount}");
Imports IronPdf
Imports System
Module Program
Sub Main()
Dim pdfPath As String = "document.pdf"
' Open and extract text from PDF
Dim pdf As PdfDocument = PdfDocument.FromFile(pdfPath)
' Extract text from all pages
Dim allText As String = pdf.ExtractAllText()
Console.WriteLine("Extracted Text:")
Console.WriteLine(allText)
' Extract text from specific page
Dim pageText As String = pdf.ExtractTextFromPage(0)
Console.WriteLine(vbCrLf & "First page text: " & pageText)
Console.WriteLine(vbCrLf & "Total pages: " & pdf.PageCount)
End Sub
End Module
这个例子凸显了一个基本的能力差距。PdfiumViewer 明确指出它 "没有内置文本提取功能","您需要使用 OCR 或其他库"--它只能将页面呈现为图像。 如果您需要使用PdfiumViewer从 PDF 中获取文本,您将被迫渲染为图像并运行 OCR。
IronPDF 提供原生文本提取功能,使用 ExtractAllText() 提取整个文档的文本,或使用 ExtractTextFromPage(index) 提取特定页面的文本。 无需 OCR,无需变通方法--直接从 PDF 内容中提取文本。 有关其他选项,请参阅文本提取文档。
示例 2:HTML 到 PDF 的转换
之前 (PdfiumViewer):
// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System.IO;
using System.Drawing.Printing;
// PDFiumViewer is primarily a PDF viewer/renderer, not a generator
// It cannot directly convert HTML to PDF
// You would need to use another library to first create the PDF
// Then use PDFiumViewer to display it:
string htmlContent = "<h1>Hello World</h1><p>This is a test document.</p>";
// This functionality is NOT available in PDFiumViewer
// You would need a different library like wkhtmltopdf or similar
// PDFiumViewer can only open and display existing PDFs:
string existingPdfPath = "output.pdf";
using (var document = PdfDocument.Load(existingPdfPath))
{
// Can only render/display existing PDF
var image = document.Render(0, 300, 300, true);
}
// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System.IO;
using System.Drawing.Printing;
// PDFiumViewer is primarily a PDF viewer/renderer, not a generator
// It cannot directly convert HTML to PDF
// You would need to use another library to first create the PDF
// Then use PDFiumViewer to display it:
string htmlContent = "<h1>Hello World</h1><p>This is a test document.</p>";
// This functionality is NOT available in PDFiumViewer
// You would need a different library like wkhtmltopdf or similar
// PDFiumViewer can only open and display existing PDFs:
string existingPdfPath = "output.pdf";
using (var document = PdfDocument.Load(existingPdfPath))
{
// Can only render/display existing PDF
var image = document.Render(0, 300, 300, true);
}
Imports PdfiumViewer
Imports System.IO
Imports System.Drawing.Printing
' PDFiumViewer is primarily a PDF viewer/renderer, not a generator
' It cannot directly convert HTML to PDF
' You would need to use another library to first create the PDF
' Then use PDFiumViewer to display it:
Dim htmlContent As String = "<h1>Hello World</h1><p>This is a test document.</p>"
' This functionality is NOT available in PDFiumViewer
' You would need a different library like wkhtmltopdf or similar
' PDFiumViewer can only open and display existing PDFs:
Dim existingPdfPath As String = "output.pdf"
Using document = PdfDocument.Load(existingPdfPath)
' Can only render/display existing PDF
Dim image = document.Render(0, 300, 300, True)
End Using
After (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
string htmlContent = "<h1>Hello World</h1><p>This is a test document.</p>";
// Create a PDF from HTML string
var renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Save the PDF
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully!");
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
string htmlContent = "<h1>Hello World</h1><p>This is a test document.</p>";
// Create a PDF from HTML string
var renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Save the PDF
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully!");
Imports IronPdf
Imports System
Module Program
Sub Main()
Dim htmlContent As String = "<h1>Hello World</h1><p>This is a test document.</p>"
' Create a PDF from HTML string
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
' Save the PDF
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF created successfully!")
End Sub
End Module
本例展示了两个库之间最显著的功能差异。PdfiumViewer明确指出 "PDFiumViewer 中不提供此功能 "和 "您需要不同的库,如 wkhtmltopdf 或类似库"--PdfiumViewer 只能打开和显示现有的 PDF。
IronPDF 通过 ChromePdfRenderer 提供原生 HTML 到 PDF 的转换,它内部使用 Chromium 引擎来精确渲染 HTML、CSS 和 JavaScript。 RenderHtmlAsPdf() 方法直接将 HTML 字符串转换为 PDF 文档。IronPDF还可以渲染带有 RenderUrlAsPdf() 的 URL 和带有 RenderHtmlFileAsPdf() 的 HTML 文件。 请参阅 HTML 转 PDF 文档,了解全面的示例。
示例 3:PDF 到图像的转换
之前 (PdfiumViewer):
// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System;
using System.Drawing;
using System.Drawing.Imaging;
string pdfPath = "document.pdf";
string outputImage = "page1.png";
// PDFiumViewer excels at rendering PDFs to images
using (var document = PdfDocument.Load(pdfPath))
{
// Render first page at 300 DPI
int dpi = 300;
using (var image = document.Render(0, dpi, dpi, true))
{
// Save as PNG
image.Save(outputImage, ImageFormat.Png);
Console.WriteLine($"Page rendered to {outputImage}");
}
// Render all pages
for (int i = 0; i < document.PageCount; i++)
{
using (var pageImage = document.Render(i, 150, 150, true))
{
pageImage.Save($"page_{i + 1}.png", ImageFormat.Png);
}
}
}
// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System;
using System.Drawing;
using System.Drawing.Imaging;
string pdfPath = "document.pdf";
string outputImage = "page1.png";
// PDFiumViewer excels at rendering PDFs to images
using (var document = PdfDocument.Load(pdfPath))
{
// Render first page at 300 DPI
int dpi = 300;
using (var image = document.Render(0, dpi, dpi, true))
{
// Save as PNG
image.Save(outputImage, ImageFormat.Png);
Console.WriteLine($"Page rendered to {outputImage}");
}
// Render all pages
for (int i = 0; i < document.PageCount; i++)
{
using (var pageImage = document.Render(i, 150, 150, true))
{
pageImage.Save($"page_{i + 1}.png", ImageFormat.Png);
}
}
}
Imports PdfiumViewer
Imports System
Imports System.Drawing
Imports System.Drawing.Imaging
Module Module1
Sub Main()
Dim pdfPath As String = "document.pdf"
Dim outputImage As String = "page1.png"
' PDFiumViewer excels at rendering PDFs to images
Using document = PdfDocument.Load(pdfPath)
' Render first page at 300 DPI
Dim dpi As Integer = 300
Using image = document.Render(0, dpi, dpi, True)
' Save as PNG
image.Save(outputImage, ImageFormat.Png)
Console.WriteLine($"Page rendered to {outputImage}")
End Using
' Render all pages
For i As Integer = 0 To document.PageCount - 1
Using pageImage = document.Render(i, 150, 150, True)
pageImage.Save($"page_{i + 1}.png", ImageFormat.Png)
End Using
Next
End Using
End Sub
End Module
After (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Linq;
string pdfPath = "document.pdf";
string outputImage = "page1.png";
// Open PDF and convert to images
PdfDocument pdf = PdfDocument.FromFile(pdfPath);
// Convert first page to image
var firstPageImage = pdf.ToBitmap(0);
firstPageImage[0].Save(outputImage);
Console.WriteLine($"Page rendered to {outputImage}");
// Convert all pages to images
var allPageImages = pdf.ToBitmap();
for (int i = 0; i < allPageImages.Length; i++)
{
allPageImages[i].Save($"page_{i + 1}.png");
Console.WriteLine($"Saved page {i + 1}");
}
Console.WriteLine($"Total pages converted: {pdf.PageCount}");
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Linq;
string pdfPath = "document.pdf";
string outputImage = "page1.png";
// Open PDF and convert to images
PdfDocument pdf = PdfDocument.FromFile(pdfPath);
// Convert first page to image
var firstPageImage = pdf.ToBitmap(0);
firstPageImage[0].Save(outputImage);
Console.WriteLine($"Page rendered to {outputImage}");
// Convert all pages to images
var allPageImages = pdf.ToBitmap();
for (int i = 0; i < allPageImages.Length; i++)
{
allPageImages[i].Save($"page_{i + 1}.png");
Console.WriteLine($"Saved page {i + 1}");
}
Console.WriteLine($"Total pages converted: {pdf.PageCount}");
Imports IronPdf
Imports System
Imports System.Linq
Module Module1
Sub Main()
Dim pdfPath As String = "document.pdf"
Dim outputImage As String = "page1.png"
' Open PDF and convert to images
Dim pdf As PdfDocument = PdfDocument.FromFile(pdfPath)
' Convert first page to image
Dim firstPageImage = pdf.ToBitmap(0)
firstPageImage(0).Save(outputImage)
Console.WriteLine($"Page rendered to {outputImage}")
' Convert all pages to images
Dim allPageImages = pdf.ToBitmap()
For i As Integer = 0 To allPageImages.Length - 1
allPageImages(i).Save($"page_{i + 1}.png")
Console.WriteLine($"Saved page {i + 1}")
Next
Console.WriteLine($"Total pages converted: {pdf.PageCount}")
End Sub
End Module
这正是PdfiumViewer的优势所在--PDF 图像渲染是其主要优势。 这两个库都能有效地完成这项任务,但模式不同。
PdfiumViewer 使用 document.Render(pageIndex, dpiX, dpiY, forPrinting) 和嵌套的 using 语句进行正确处置。 您需要为 System.Drawing 和 System.Drawing.Imaging 导入 ImageFormat 枚举。
IronPDF 使用 pdf.ToBitmap(pageIndex),它返回一个位图数组。 模式较为简单,没有嵌套处置要求。 对于批量操作,不带参数的 ToBitmap() 将返回所有页面。 您也可以使用 RasterizeToImageFiles() 直接输出文件。 有关其他渲染选项,请参阅 PDF 转图像文档。
本地依赖关系移除
从PdfiumViewer迁移到IronPDF的重大好处之一是消除了本地二进制管理。
之前 (PdfiumViewer) - 复杂部署
MyApp/
├─── bin/
│ ├─── MyApp.dll
│ ├── PdfiumViewer.dll
│ ├── x86/
│ │ └── pdfium.dll
│ └── x64/
│ └── pdfium.dll
后 (IronPDF) - 清洁部署
MyApp/
├─── bin/
│ ├─── MyApp.dll
│ └─── IronPDF.dll # 包含的所有内容
移除本地二进制引用
# Delete native PDFium binaries
rm -rf x86/ x64/ runtimes/
# Remove from .csproj native package references
# <PackageReference Include="PdfiumViewer.Native.x86.v8-xfa" />
# <PackageReference Include="PdfiumViewer.Native.x64.v8-xfa" />
# Delete native PDFium binaries
rm -rf x86/ x64/ runtimes/
# Remove from .csproj native package references
# <PackageReference Include="PdfiumViewer.Native.x86.v8-xfa" />
# <PackageReference Include="PdfiumViewer.Native.x64.v8-xfa" />
关键迁移说明
无内置查看器控件
IronPDF 侧重于后台,不包含可视化 PDF 查看器控件:
// PdfiumViewer: Built-in viewer control
pdfViewer.Document = document;
// IronPDF: Use external viewer or web-based approach
pdf.SaveAs(tempPath);
Process.Start(new ProcessStartInfo(tempPath) { UseShellExecute = true });
// PdfiumViewer: Built-in viewer control
pdfViewer.Document = document;
// IronPDF: Use external viewer or web-based approach
pdf.SaveAs(tempPath);
Process.Start(new ProcessStartInfo(tempPath) { UseShellExecute = true });
' PdfiumViewer: Built-in viewer control
pdfViewer.Document = document
' IronPDF: Use external viewer or web-based approach
pdf.SaveAs(tempPath)
Process.Start(New ProcessStartInfo(tempPath) With {.UseShellExecute = True})
对于查看需求,请考虑使用 Process.Start() 在默认 PDF 查看器中打开,或使用带有 PDF 路径的 WebBrowser 控件,或使用 Syncfusion、DevExpress 或 Telerik 等第三方查看器控件。
文档加载方法更改
// PdfiumViewer
PdfDocument.Load(path)
// IronPDF
PdfDocument.FromFile(path)
// PdfiumViewer
PdfDocument.Load(path)
// IronPDF
PdfDocument.FromFile(path)
' PdfiumViewer
PdfDocument.Load(path)
' IronPDF
PdfDocument.FromFile(path)
保存方法更改
// PdfiumViewer
document.Save(path)
// IronPDF
pdf.SaveAs(path)
// PdfiumViewer
document.Save(path)
// IronPDF
pdf.SaveAs(path)
渲染方法更改
// PdfiumViewer: Returns image with nested using
using (var image = document.Render(0, 150, 150, true))
{
image.Save("page.png", ImageFormat.Png);
}
// IronPDF: Returns bitmap array
var images = pdf.ToBitmap(0);
images[0].Save("page.png");
// PdfiumViewer: Returns image with nested using
using (var image = document.Render(0, 150, 150, true))
{
image.Save("page.png", ImageFormat.Png);
}
// IronPDF: Returns bitmap array
var images = pdf.ToBitmap(0);
images[0].Save("page.png");
Imports System.Drawing.Imaging
' PdfiumViewer: Returns image with nested using
Using image = document.Render(0, 150, 150, True)
image.Save("page.png", ImageFormat.Png)
End Using
' IronPDF: Returns bitmap array
Dim images = pdf.ToBitmap(0)
images(0).Save("page.png")
页面大小访问更改
// PdfiumViewer
var size = document.PageSizes[index];
Console.WriteLine($"{size.Width} x {size.Height}");
// IronPDF
var page = pdf.Pages[index];
Console.WriteLine($"{page.Width} x {page.Height}");
// PdfiumViewer
var size = document.PageSizes[index];
Console.WriteLine($"{size.Width} x {size.Height}");
// IronPDF
var page = pdf.Pages[index];
Console.WriteLine($"{page.Width} x {page.Height}");
' PdfiumViewer
Dim size = document.PageSizes(index)
Console.WriteLine($"{size.Width} x {size.Height}")
' IronPDF
Dim page = pdf.Pages(index)
Console.WriteLine($"{page.Width} x {page.Height}")
功能对比摘要
| 特征 | PdfiumViewer | IronPDF |
|---|---|---|
| 加载 PDF | ✓ | ✓ |
| 渲染为图像 | ✓ | ✓ |
| 内置浏览器 | ✓ | ✗ |
| 打印 PDF | ✓ | ✓ |
| 提取文本 | ✗ | ✓ |
| 从 HTML 创建 | ✗ | ✓ |
| 从 URL 创建 | ✗ | ✓ |
| 合并 PDF | ✗ | ✓ |
| 拆分 PDF | ✗ | ✓ |
| 添加水印 | ✗ | ✓ |
| 页眉/页脚 | ✗ | ✓ |
| 表格填写 | ✗ | ✓ |
| 密码保护 | ✗ | ✓ |
| 支持 WinForms | ✓ | ✓ |
| ASP.NET 支持 | ✗ | ✓ |
| 支持 .NET Core | 有限的 | ✓ |
| 主动维护 | 不确定 | ✓ |
迁移清单
迁移前
- 识别代码库中所有PdfiumViewer的使用情况
- 使用 PdfViewer 控件列出 WinForms
- 记录当前渲染 DPI 设置
- 检查本地二进制引用
- 确定打印功能使用情况
- 计划查看器控件替换策略
- 获取IronPDF许可证密钥
软件包变更
- 删除
PdfiumViewerNuGet 包 - 删除
PdfiumViewer.Native.x86.v8-xfa包 - 删除
PdfiumViewer.Native.x64.v8-xfa包 - 从 x86/ 和 x64/ 文件夹中删除原生 pdfium.dll 二进制文件
安装
IronPdfNuGet 包:dotnet add package IronPdf
代码更改
- 在启动时添加许可证密钥配置
- 将
PdfDocument.Load()替换为PdfDocument.FromFile() - 将
document.Save()替换为pdf.SaveAs() - 将
document.Render()替换为pdf.ToBitmap()或RasterizeToImageFiles() - 将
document.PageSizes[i]替换为pdf.Pages[i].Width/Height - 将 PdfViewer 控件替换为外部查看器或 Process.Start()
- 添加新功能(文本提取、HTML 转 PDF 等)
后迁移
- 测试渲染输出质量
- 测试打印功能
- 在目标平台上进行测试
- 添加新功能(HTML 转 PDF、合并、水印、安全功能)
- 更新文档

