迁移指南 如何用 C# 从 IronPDFium 迁移到 IronPDF Curtis Chau 已更新:2026年2月1日 下载 IronPDF NuGet 下载 DLL 下载 Windows 安装程序 免费试用 LLM副本 LLM副本 将页面复制为 Markdown 格式,用于 LLMs 在 ChatGPT 中打开 向 ChatGPT 咨询此页面 在双子座打开 向 Gemini 询问此页面 在 Grok 中打开 向 Grok 询问此页面 打开困惑 向 Perplexity 询问有关此页面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 复制链接 电子邮件文章 从 IronPdf.NET 迁移到 IronPDF,可以将您的 .NET PDF 工作流程从具有本地二进制依赖关系的、以渲染为重点的库转变为一个全面的 PDF 解决方案,该解决方案可以处理创建、操作和渲染,而不会产生特定平台的复杂性。 本指南提供了一个完整的、循序渐进的迁移路径,消除了本地依赖性管理,同时增加了 Pdfium 无法提供的功能。 为什么要从IronPDF迁移到 IronPDF. 了解 Pdfium.NET. Pdfium.NET 是 Google PDFium 库的 .NET 封装程序,该库以高效、快速地渲染 PDF 文档而闻名。 它已成为开发人员在 C# 应用程序中钻研错综复杂的 PDF 渲染的重要库,可在 .NET 环境中高保真地复制 PDF 内容。 然而,尽管 Pdfium.NET 擅长渲染,但其创建和处理 PDF 文档的能力有限。 它主要适用于需要准确显示 PDF 内容的应用程序,而不太强调修改或创建新的 PDF。 关键软件限制 仅限渲染: 无法从HTML、图像或以编程方式创建PDF。 Pdfium 的功能仅限于查看和渲染 PDF。 没有PDF操作: 无法合并、拆分或修改PDF内容。 本机不支持 PDF 合并,您需要使用 iTextSharp 或 PdfSharp 等其他库。 本机二进制依赖项: 需要特定平台的PDFium二进制文件。 开发人员需要管理本地 PDFium 二进制文件,这增加了部署和分发过程中的复杂性。 部署复杂性: 必须为每个平台捆绑和管理x86、x64以及runtimes文件夹中的本机DLL。 有限的文本提取: 基本文本提取,无格式化功能。 文本提取需要使用 Pdfium.NET 进行额外工作。 没有HTML转PDF: 无法将网页内容转换为PDF。 Pdfium.NET 本身不支持 HTML 到 PDF 的转换。 没有页眉/页脚: 无法添加页码或重复内容。 没有水印: 无法用叠加层为文档加盖印记。 没有表单支持: 无法填写或读取PDF表单。 没有安全功能: 无法加密或密码保护PDF。 Pdfium 与IronPDF对比 方面 Pdfium.NET IronPDF 主要关注点 渲染/查看 完整的 PDF 解决方案 渲染保真度 高保真渲染 高,尤其是 HTML/CSS/JS。 PDF 创建 ✗ ✓ (HTML、URL、图片) PDF 操作 ✗ ✓(合并、拆分、编辑) HTML 到 PDF ✗ ✓(Chromium 引擎) 水印。 ✗ ✓ 页眉/页脚 ✗ ✓ 表格填写 ✗ ✓ 安全性 ✗ ✓ 本地依赖关系 要求 无(完全托管) 跨平台 复杂的设置 自动翻译 易于部署 因本地依赖性而复杂 更简单; 减少依赖复杂性 对于计划在 2025 年和 2026 年之前采用 .NET 10 和 C# 14 的团队来说,IronPDF 提供了一个完全可管理的基础,消除了本地二进制管理,同时增加了全面的 PDF 创建和操作功能。 开始之前 前提条件 .NET环境: .NET Framework 4.6.2+ 或 .NET Core 3.1+ / .NET 5/6/7/8/9+ NuGet访问:能够安装NuGet包 IronPDF许可证:从ironpdf.com获取您的许可证密钥 NuGet 软件包变更 # Remove Pdfium packages dotnet remove package Pdfium.NET dotnet remove package Pdfium.Net.SDK dotnet remove package PdfiumViewer # Install IronPDF dotnet add package IronPdf # Remove Pdfium packages dotnet remove package Pdfium.NET dotnet remove package Pdfium.Net.SDK dotnet remove package PdfiumViewer # Install IronPDF dotnet add package IronPdf SHELL 许可配置 // 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"; $vbLabelText $csharpLabel 确定 Pdfium 的用法 # Find Pdfium usage grep -r "Pdfium\|PdfDocument\.Load\|\.Render\(" --include="*.cs" . # Find native binary references grep -r "pdfium\.dll\|pdfium\.so\|pdfium\.dylib" --include="*.csproj" --include="*.config" . # Find platform-specific code grep -r "#if.*64\|WIN32\|WIN64\|LINUX\|OSX" --include="*.cs" . # Find Pdfium usage grep -r "Pdfium\|PdfDocument\.Load\|\.Render\(" --include="*.cs" . # Find native binary references grep -r "pdfium\.dll\|pdfium\.so\|pdfium\.dylib" --include="*.csproj" --include="*.config" . # Find platform-specific code grep -r "#if.*64\|WIN32\|WIN64\|LINUX\|OSX" --include="*.cs" . SHELL 完整的 API 参考 命名空间变更 // Pdfium.NET using Pdfium; using Pdfium.Net; using PdfiumViewer; // IronPDF using IronPdf; using IronPdf.Rendering; using IronPdf.Editing; // Pdfium.NET using Pdfium; using Pdfium.Net; using PdfiumViewer; // IronPDF using IronPdf; using IronPdf.Rendering; using IronPdf.Editing; $vbLabelText $csharpLabel 核心类映射 Pdfium.NET IronPDF PdfDocument PdfDocument PdfPage PdfPage PdfPageCollection PdfPageCollection (不可用)_ ChromePdfRenderer (不可用)_ HtmlHeaderFooter 文档加载映射 Pdfium.NET IronPDF PdfDocument.Load(path) PdfDocument.FromFile(path) PdfDocument.Load(stream) PdfDocument.FromStream(stream) PdfDocument.Load(bytes) PdfDocument.FromBinaryData(bytes) new PdfDocument(path) PdfDocument.FromFile(path) 文档属性映射 Pdfium.NET IronPDF document.PageCount document.PageCount document.Pages document.Pages document.Pages[index] document.Pages[index] document.GetPageSize(index) document.Pages[index].Width/Height 文本提取映射 Pdfium.NET IronPDF document.GetPdfText(pageIndex) document.Pages[index].Text (手动循环) document.ExtractAllText() page.GetTextBounds() page.Text 保存文档映射 Pdfium.NET IronPDF document.Save(path) document.SaveAs(path) document.Save(stream) document.Stream (不可用)_ document.BinaryData 页面渲染映射 Pdfium.NET IronPDF page.Render(width, height) pdf.RasterizeToImageFiles(path, dpi) page.Render(width, height, flags) DPI 参数 document.Render(index, width, height) pdf.RasterizeToImageFiles() page.RenderToScale(scale) DPI: 72 * scale Pdfium 中没有的新功能 IronPDF 特点 说明 ChromePdfRenderer.RenderHtmlAsPdf() 从 HTML 创建 ChromePdfRenderer.RenderUrlAsPdf() 从 URL 创建 ChromePdfRenderer.RenderHtmlFileAsPdf() 从 HTML 文件创建 PdfDocument.Merge() 合并 PDF pdf.CopyPages() 提取页面 pdf.RemovePages() 删除页面 pdf.InsertPdf() 在位置处插入 PDF pdf.ApplyWatermark() 添加水印 pdf.AddHtmlHeaders() 添加页眉 pdf.AddHtmlFooters() 添加页脚 pdf.SecuritySettings 密码保护 pdf.SignWithDigitalSignature() 数字签名 pdf.Form 表格填写 代码迁移示例 示例 1:从 PDF 中提取文本 之前 (Pdfium): // NuGet: Install-Package PdfiumViewer using PdfiumViewer; using System; using System.IO; using System.Text; class Program { static void Main() { string pdfPath = "document.pdf"; using (var document = PdfDocument.Load(pdfPath)) { StringBuilder text = new StringBuilder(); for (int i = 0; i < document.PageCount; i++) { // Note: PdfiumViewer has limited text extraction capabilities // Text extraction requires additional work with Pdfium.NET string pageText = document.GetPdfText(i); text.AppendLine(pageText); } Console.WriteLine(text.ToString()); } } } // NuGet: Install-Package PdfiumViewer using PdfiumViewer; using System; using System.IO; using System.Text; class Program { static void Main() { string pdfPath = "document.pdf"; using (var document = PdfDocument.Load(pdfPath)) { StringBuilder text = new StringBuilder(); for (int i = 0; i < document.PageCount; i++) { // Note: PdfiumViewer has limited text extraction capabilities // Text extraction requires additional work with Pdfium.NET string pageText = document.GetPdfText(i); text.AppendLine(pageText); } Console.WriteLine(text.ToString()); } } } $vbLabelText $csharpLabel After (IronPDF): // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { string pdfPath = "document.pdf"; var pdf = PdfDocument.FromFile(pdfPath); string text = pdf.ExtractAllText(); Console.WriteLine(text); } } // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { string pdfPath = "document.pdf"; var pdf = PdfDocument.FromFile(pdfPath); string text = pdf.ExtractAllText(); Console.WriteLine(text); } } $vbLabelText $csharpLabel 这里的差异非常大。 Pdfium 需要通过 GetPdfText(pageIndex) 手动遍历每个页面,构建一个 StringBuilder 并管理 using 语句以正确处理。 代码指出,"PdfiumViewer 的文本提取功能有限","文本提取需要额外的工作"。 IronPDF 将此简化为三行:使用 PdfDocument.FromFile() 加载,使用 ExtractAllText() 提取,并输出。 ExtractAllText() 方法自动处理所有页面,具有更高级的文本提取功能。 如果您需要每页提取,可以使用 pdf.Pages[index].Text。 请参阅 文本提取文档 以获取其他选项。 示例 2:PDF 合并 之前 (Pdfium): // NuGet: Install-Package PdfiumViewer using PdfiumViewer; using System; using System.IO; using System.Collections.Generic; // Note: PdfiumViewer does not have native PDF merging functionality // You would need to use additional libraries or implement custom logic class Program { static void Main() { List<string> pdfFiles = new List<string> { "document1.pdf", "document2.pdf", "document3.pdf" }; // PdfiumViewer is primarily for rendering/viewing // PDF merging is not natively supported // You would need to use another library like iTextSharp or PdfSharp Console.WriteLine("PDF merging not natively supported in PdfiumViewer"); } } // NuGet: Install-Package PdfiumViewer using PdfiumViewer; using System; using System.IO; using System.Collections.Generic; // Note: PdfiumViewer does not have native PDF merging functionality // You would need to use additional libraries or implement custom logic class Program { static void Main() { List<string> pdfFiles = new List<string> { "document1.pdf", "document2.pdf", "document3.pdf" }; // PdfiumViewer is primarily for rendering/viewing // PDF merging is not natively supported // You would need to use another library like iTextSharp or PdfSharp Console.WriteLine("PDF merging not natively supported in PdfiumViewer"); } } $vbLabelText $csharpLabel After (IronPDF): // NuGet: Install-Package IronPdf using IronPdf; using System; using System.Collections.Generic; class Program { static void Main() { List<string> pdfFiles = new List<string> { "document1.pdf", "document2.pdf", "document3.pdf" }; var pdf = PdfDocument.Merge(pdfFiles); pdf.SaveAs("merged.pdf"); Console.WriteLine("PDFs merged successfully"); } } // NuGet: Install-Package IronPdf using IronPdf; using System; using System.Collections.Generic; class Program { static void Main() { List<string> pdfFiles = new List<string> { "document1.pdf", "document2.pdf", "document3.pdf" }; var pdf = PdfDocument.Merge(pdfFiles); pdf.SaveAs("merged.pdf"); Console.WriteLine("PDFs merged successfully"); } } $vbLabelText $csharpLabel 这个例子凸显了一个基本的能力差距。Pdfium 无法合并 PDF--代码明确指出 "PdfiumViewer 本身不支持 PDF 合并 "和 "您需要使用 iTextSharp 或 PdfSharp 等其他库"。 IronPDF 提供了本机合并功能,通过静态 PdfDocument.Merge() 方法直接接受文件路径列表。 结果是一个新的 PdfDocument,您可以使用 SaveAs() 保存。 了解有关 合并和拆分 PDF 的更多信息。 示例 3:HTML 到 PDF 的转换 之前 (Pdfium): // NuGet: Install-Package PdfiumViewer using PdfiumViewer; using System.IO; using System.Drawing.Printing; // Note: PdfiumViewer is primarily for viewing/rendering PDFs, not creating them from HTML // For HTML to PDF with Pdfium.NET, you would need additional libraries // This example shows a limitation of Pdfium.NET class Program { static void Main() { // Pdfium.NET does not have native HTML to PDF conversion // You would need to use a separate library to convert HTML to PDF // then use Pdfium for manipulation string htmlContent = "<h1>Hello World</h1>"; // This functionality is not directly available in Pdfium.NET Console.WriteLine("HTML to PDF conversion not natively supported in Pdfium.NET"); } } // NuGet: Install-Package PdfiumViewer using PdfiumViewer; using System.IO; using System.Drawing.Printing; // Note: PdfiumViewer is primarily for viewing/rendering PDFs, not creating them from HTML // For HTML to PDF with Pdfium.NET, you would need additional libraries // This example shows a limitation of Pdfium.NET class Program { static void Main() { // Pdfium.NET does not have native HTML to PDF conversion // You would need to use a separate library to convert HTML to PDF // then use Pdfium for manipulation string htmlContent = "<h1>Hello World</h1>"; // This functionality is not directly available in Pdfium.NET Console.WriteLine("HTML to PDF conversion not natively supported in Pdfium.NET"); } } $vbLabelText $csharpLabel After (IronPDF): // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { var renderer = new ChromePdfRenderer(); string htmlContent = "<h1>Hello World</h1>"; var pdf = renderer.RenderHtmlAsPdf(htmlContent); pdf.SaveAs("output.pdf"); Console.WriteLine("PDF created successfully"); } } // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { var renderer = new ChromePdfRenderer(); string htmlContent = "<h1>Hello World</h1>"; var pdf = renderer.RenderHtmlAsPdf(htmlContent); pdf.SaveAs("output.pdf"); Console.WriteLine("PDF created successfully"); } } $vbLabelText $csharpLabel 本例展示了最显著的能力差异。 Pdfium 明确指出 "Pdfium.NET 不支持 HTML 到 PDF 的转换 "和 "您需要使用单独的库将 HTML 转换为 PDF"。 IronPDF 提供了本机HTML转PDF转换,通过 ChromePdfRenderer,该方法在内部使用Chromium引擎,以准确渲染HTML、CSS和JavaScript。 RenderHtmlAsPdf() 方法直接将HTML字符串转换为PDF文档。IronPDF还可以通过 RenderUrlAsPdf() 渲染URL,通过 RenderHtmlFileAsPdf() 渲染HTML文件。 请参阅 HTML 转 PDF 文档,了解全面的示例。 本地依赖关系移除 从IronPDF迁移到IronPDF的最大好处之一是消除了本地二进制管理。 之前 (Pdfium) - 复杂部署 MyApp/ ├─── bin/ │ ├─── MyApp.dll │ ├── Pdfium.NET.dll │ ├── x86/ │ │ └── pdfium.dll │ └── x64/ │ └── pdfium.dll 运行时 │ ├─── win-x86/native/ │ │ └── pdfium.dll │ └───-win-x64/native/ │ └── pdfium.dll 后 (IronPDF) - 清洁部署 MyApp/ ├─── bin/ │ ├─── MyApp.dll │ └─── IronPDF.dll # 包含的所有内容 移除本地二进制引用 # Delete native PDFium binaries rm -rf x86/ x64/ runtimes/ # Remove from .csproj # Delete any <Content Include="pdfium.dll" /> entries # Delete any <None Include="x86/pdfium.dll" /> entries # Delete native PDFium binaries rm -rf x86/ x64/ runtimes/ # Remove from .csproj # Delete any <Content Include="pdfium.dll" /> entries # Delete any <None Include="x86/pdfium.dll" /> entries SHELL 关键迁移说明 缩放比例到 DPI 转换 Pdfium 使用比例系数;IronPDF使用 DPI: // Formula:IronPDFDPI = 72 × Pdfium scale // Pdfium scale 2.0 →IronPDFDPI 144 pdf.RasterizeToImageFiles("*.png", DPI: 144); // Formula:IronPDFDPI = 72 × Pdfium scale // Pdfium scale 2.0 →IronPDFDPI 144 pdf.RasterizeToImageFiles("*.png", DPI: 144); $vbLabelText $csharpLabel 文档加载方法更改 // Pdfium PdfDocument.Load(path) // IronPDF PdfDocument.FromFile(path) // Pdfium PdfDocument.Load(path) // IronPDF PdfDocument.FromFile(path) $vbLabelText $csharpLabel 保存方法更改 // Pdfium document.Save(path) // IronPDF pdf.SaveAs(path) // Pdfium document.Save(path) // IronPDF pdf.SaveAs(path) $vbLabelText $csharpLabel 处置模式简化 // Pdfium:要求explicit disposal using (var document = PdfDocument.Load(path)) using (var page = document.Pages[0]) using (var bitmap = page.Render(1024, 768)) { bitmap.Save("output.png"); } // IronPDF: Simplified var pdf = PdfDocument.FromFile(path); pdf.RasterizeToImageFiles("output.png"); // Pdfium:要求explicit disposal using (var document = PdfDocument.Load(path)) using (var page = document.Pages[0]) using (var bitmap = page.Render(1024, 768)) { bitmap.Save("output.png"); } // IronPDF: Simplified var pdf = PdfDocument.FromFile(path); pdf.RasterizeToImageFiles("output.png"); $vbLabelText $csharpLabel 删除特定平台的代码 // Pdfium:要求platform detection #if WIN64 // Load x64 pdfium.dll #else // Load x86 pdfium.dll #endif // IronPDF: Remove all platform-specific code // Just use the API directly // Pdfium:要求platform detection #if WIN64 // Load x64 pdfium.dll #else // Load x86 pdfium.dll #endif // IronPDF: Remove all platform-specific code // Just use the API directly $vbLabelText $csharpLabel 功能对比摘要 特征 Pdfium.NET IronPDF 加载 PDF ✓ ✓ 渲染为图像 ✓ ✓ 提取文本 ✓ (基本) ✓(高级) 页面信息 ✓ ✓ 从 HTML 创建 ✗ ✓ 从 URL 创建 ✗ ✓ 合并 PDF ✗ ✓ 拆分 PDF ✗ ✓ 添加水印 ✗ ✓ 页眉/页脚 ✗ ✓ 表格填写 ✗ ✓ 数字签名 ✗ ✓ 密码保护 ✗ ✓ 本地依赖性 要求 无 跨平台 复杂 自动翻译 内存管理 手册处理 简化 迁移清单 迁移前 确定代码库中的所有Pdfium用法 记录当前使用的渲染尺寸/比例 列出项目中的本机二进制文件位置 检查是否有特定平台加载代码 确定PDF创建需求(目前是否使用不同工具?) 查看转换的处理模式 获取IronPDF许可证密钥 软件包变更 移除 Pdfium.NET, Pdfium.Net.SDK, PdfiumViewer NuGet包 从x86/, x64/, runtimes/文件夹中删除本机pdfium.dll二进制文件 移除特定平台条件编译 更新.csproj以移除本机二进制引用 安装 IronPdf NuGet包: dotnet add package IronPdf 代码更改 启动时添加许可证密钥配置 将 PdfDocument.Load() 替换为 PdfDocument.FromFile() 将 document.Save() 替换为 pdf.SaveAs() 将 document.GetPdfText(i) 循环替换为 pdf.ExtractAllText() 将比例因子转换为DPI值 (DPI = 72 × 比例) 简化处理模式(去除嵌套的using语句) 移除特定平台代码 后迁移 测试渲染输出质量 比较文本提取结果 测试跨平台部署 添加新功能(HTML转PDF、合并、水印、安全性) 更新文档 Curtis Chau 立即与工程团队聊天 技术作家 Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。 相关文章 已更新2026年2月1日 如何用 C# 从 ZetPDF 迁移到 IronPDF 通过这本完整的 C# 指南,掌握从 ZetPDF 到 IronPDF 的迁移。从基于坐标的库转换到现代的 HTML 到 PDF 解决方案。包括 HTML 转换、合并 PDF 和移除 PDFSharp 依赖性的代码示例。 阅读更多 已更新2026年2月1日 如何用 C# 从 Scryber.Core 迁移到 IronPDF 通过这本完整的 C# 指南,掌握从 Scryber.Core 迁移到 IronPDF 的方法。从自定义 XML/HTML 解析转换到现代 Chromium 渲染器。包括 HTML 转换、URL 呈现和替换专有绑定的代码示例。 阅读更多 已更新2026年2月1日 如何用 C# 从 XFINIUM.PDF 迁移到 IronPDF 通过这本完整的 C# 指南,掌握从 XFINIUM.PDF 到 IronPDF 的迁移。从基于坐标的手动定位切换到声明式 HTML/CSS 渲染。包括替换图形基元和自动布局的代码示例。 阅读更多 如何用 C# 从 PdfiumViewer 迁移到 IronPDF如何用 C# 从 PDFFilePrint 迁...
已更新2026年2月1日 如何用 C# 从 ZetPDF 迁移到 IronPDF 通过这本完整的 C# 指南,掌握从 ZetPDF 到 IronPDF 的迁移。从基于坐标的库转换到现代的 HTML 到 PDF 解决方案。包括 HTML 转换、合并 PDF 和移除 PDFSharp 依赖性的代码示例。 阅读更多
已更新2026年2月1日 如何用 C# 从 Scryber.Core 迁移到 IronPDF 通过这本完整的 C# 指南,掌握从 Scryber.Core 迁移到 IronPDF 的方法。从自定义 XML/HTML 解析转换到现代 Chromium 渲染器。包括 HTML 转换、URL 呈现和替换专有绑定的代码示例。 阅读更多
已更新2026年2月1日 如何用 C# 从 XFINIUM.PDF 迁移到 IronPDF 通过这本完整的 C# 指南,掌握从 XFINIUM.PDF 到 IronPDF 的迁移。从基于坐标的手动定位切换到声明式 HTML/CSS 渲染。包括替换图形基元和自动布局的代码示例。 阅读更多