跳至页脚内容
迁移指南

如何用 C# 从 EO.Pdf 迁移到 IronPDF

从 EO.Pdf 迁移到 IronPDF:完整的 C# 迁移指南

EO.Pdf 是一个商用 .NET PDF 库,利用基于 Chromium 的渲染技术实现 HTML 到 PDF 的转换。 虽然 EO.Pdf 提供了符合 W3C 标准的渲染,但其架构也带来了巨大的挑战:126MB 的超大软件包会导致 Docker 镜像膨胀并减慢部署速度;基于 Internet Explorer 的原始引擎遗留下来的包袱;静态全局选项对于多租户应用程序来说不是线程安全的;尽管声称可以跨平台,但设计还是以 Windows 为中心。 本综合指南提供了从 EO.Pdf 逐步迁移到IronPDF的路径--IronPDF for .NET 是一个现代的 .NET PDF 库,具有优化的 Chromium 打包、基于实例的线程安全配置和真正的跨平台支持。

为什么要从 EO.Pdf 迁移到 IronPDF? EO.Pdf 在架构上提出了一些挑战,促使开发团队对替代方案进行评估。 了解这些问题对于规划迁移策略至关重要。 ### EO.Pdf 的问题 1.**巨大的126MB软件包大小**:EO.Pdf 捆绑了自己的 Chromium 引擎,因此部署占用空间为 126MB。 在翻译过程中,我们必须注意到,很多开发人员在使用 Docker 时,都会将 Docker 镜像放在 Docker 上,这样会膨胀 Docker 镜像、减慢 CI/CD 管道速度并增加基础设施成本。 2.**传统架构包袱**:在迁移到 Chromium 之前,EO.Pdf 最初是基于 Internet Explorer 的渲染引擎构建的。 这些遗留问题包括 IE 时代的兼容性问题、API 设计中的技术缺陷以及不同版本之间的行为不一致。 3.**以 Windows 为中心的设计**:尽管 EO.Pdf 被宣传为 "跨平台",但其对 Linux 和 macOS 的支持非常有限。 许多开发人员报告了非 Windows 部署的问题。 4.**静态全局选项**:EO.Pdf 使用静态 `HtmlToPdf.Options` 进行配置,这不是线程安全的,在多租户网络应用程序中存在问题。 5.**每个许可证 799 美元**:EO.Pdf 每个开发人员许可证的价格为 799 美元,与提供类似或更好功能的替代产品相比价格昂贵。 ### 架构比较 |方面| EO.Pdf |IronPDF| |--------|--------|---------| |**软件包大小**|126MB|优化 (~50MB)| |**版权问题**|IE 迁移包袱|简洁、现代的代码库| |**平台支持**|以 Windows 为重点|真正的跨平台| |**配置**|静态/全局(非线程安全)|基于实例、线程安全| |**API 设计**|混合(HtmlToPdf + ACM)|统一、一致| |**文档**| 有限的 |综合教程| |**现代.NET**|.NET 标准|.NET 6/7/8/9+ 原生语言| |**支持同步**| 有限的 |完整的异步/等待| ### 主要迁移优势 1.**50% Smaller Footprint**:IronPDF 的 Chromium 优化包装 2.**真正的跨平台**:可在 Windows、Linux、macOS 和 Docker 上以相同方式运行 3.**线程安全配置**:基于实例的呈现器选项 4.**现代 API**:一致、直观的方法名称 5.**更好的文档**:广泛的教程和示例 ## 迁移前准备 ### 前提条件 确保您的环境符合这些要求: - .NET Framework 4.6.2+ 或 .NET Core 3.1 / .NET 5-9 - Visual Studio 2019+ 或带有 C# 扩展的 VS Code - 访问 NuGet 包管理器 -IronPDF许可证密钥(可在[ironpdf.com](https://ironpdf.com/licensing/)免费试用) ### 审核 EO.Pdf 的使用情况 在解决方案目录中运行这些命令以识别所有 EO.Pdf 引用: ```bash # Find all EO.Pdf references grep -r "EO.Pdf\|HtmlToPdf\|AcmRender\|PdfDocument" --include="*.cs" . # Check NuGet packages dotnet list package | grep -i "EO.Pdf" ``` 需要查找的常见 EO.Pdf 命名空间: - `EO.Pdf` - Core HTML to PDF - `EO.Pdf.Acm` - 高级内容模型 (ACM) - `EO.Pdf.Contents` - 低级内容操作 - `EO.Pdf.Drawing` - 图形操作 ### 了解核心模式变更 EO.Pdf 和IronPDF在架构上的最大区别在于配置范围。 EO.Pdf 使用静态方法,其全局选项会影响所有转换--这种模式会导致网络应用程序中的线程安全问题。IronPDF使用基于实例的渲染器和本地选项,确保每次转换都是独立的。 ## 逐步迁移过程 ### 步骤 1:更新 NuGet 软件包 删除 EO.Pdf,安装 IronPdf: ```bash # Remove EO.Pdf dotnet remove package EO.Pdf # Install IronPDF dotnet add package IronPdf ``` ### 步骤 2:更新命名空间引用 用IronPDF替换 EO.Pdf 命名空间: ```csharp // Remove these using EO.Pdf; using EO.Pdf.Acm; // Add this using IronPdf; ``` ### 步骤 3:配置许可证 ```csharp // Add at application startup (Program.cs or Startup.cs) IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; ``` ## 完整的 API 迁移参考 ### 核心类映射 |EO.Pdf 类|IronPdf 同等产品|备注| |-------------|-------------------|-------| |<代码>HtmlToPdfChromePdfRendererPDF 文档PDF 文档HtmlToPdfOptionsChromePdfRenderOptionsAcmRenderAcmText`, `

`| | |<代码>AcmBlock`| | ### 方法映射 |EO.Pdf 方法|IronPdf 方法|备注| |--------------|----------------|-------| |<代码>HtmlToPdf.ConvertHtml(html,路径)HtmlToPdf.ConvertUrl(url, path)PdfDocument.Save(路径)pdf.SaveAs(路径)新建 PdfDocument(path)PdfDocument.FromFile(路径)doc.Append(其他)PdfDocument.Merge(doc1, doc2)Options.PageSize = PdfPageSizes.A4PaperSize = PdfPaperSize.A4

Hello World

This is a PDF generated from HTML.

"; HtmlToPdf.ConvertHtml(html, "output.pdf"); Console.WriteLine("PDF created successfully!"); } } ``` **IronPDF 实现:** ```csharp // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { string html = "

Hello World

This is a PDF generated from HTML.

"; var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("output.pdf"); Console.WriteLine("PDF created successfully!"); } } ``` IronPdf 的两步模式(渲染,然后保存)提供了对<代码>PDF 文档英寸 × 25.4 = 毫米。 有关更多选项,请参阅[渲染选项文档](https://ironpdf.com/tutorials/)。 ### 合并多个 PDF 文件 PDF 合并演示了 EO.Pdf 的 `Append` 循环模式与IronPDF的静态 `Merge` 方法之间的区别。 **EO.Pdf 实现:** ```csharp // NuGet: Install-Package EO.Pdf using EO.Pdf; using System; class Program { static void Main() { PdfDocument doc1 = new PdfDocument("file1.pdf"); PdfDocument doc2 = new PdfDocument("file2.pdf"); PdfDocument mergedDoc = new PdfDocument(); mergedDoc.Append(doc1); mergedDoc.Append(doc2); mergedDoc.Save("merged.pdf"); Console.WriteLine("PDFs merged successfully!"); } } ``` **IronPDF 实现:** ```csharp // NuGet: Install-Package IronPdf using IronPdf; using System; using System.Collections.Generic; class Program { static void Main() { var pdf1 = PdfDocument.FromFile("file1.pdf"); var pdf2 = PdfDocument.FromFile("file2.pdf"); var merged = PdfDocument.Merge(new List{ pdf1, pdf2 }); merged.SaveAs("merged.pdf"); Console.WriteLine("PDFs merged successfully!"); } } ``` IronPdf 的静态 `Merge` 方法接受文档集合,简化了多文档合并。 注意从构造函数(`new PdfDocument(path)`)到静态工厂(`PdfDocument.FromFile(path)`)的变化。 有关更多选项,请参阅 [IronPDF合并文档](https://ironpdf.com/how-to/merge-split-pdfs/)。 ## 关键迁移说明 ### 边际单位转换 EO.Pdf 在 `OutputArea` 中使用英寸。 IronPdf 使用毫米。 转换使用:<代码>英寸 × 25.4 = 毫米Sample Text"; var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(html); ``` ### 两步保存模式 EO.Pdf 可直接保存在 `ConvertHtml()` 中。IronPDF返回一个<代码>PDF 文档新建 PdfDocument(path)PdfDocument.FromFile(路径)
Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

相关文章