跳至页脚内容
迁移指南

如何用 C# 从 ExpertPdf 迁移到 IronPDF

从ExpertPdf迁移到 IronPDF:完整的 C# 迁移指南。

ExpertPdf 是一款适用于 .NET 的商用 HTML 到 PDF 转换器,多年来一直为开发人员提供服务。 然而,在当今快速发展的开发环境中,ExpertPdf 面临着巨大的挑战:文档自 2018 年起冻结,依赖于错过现代 CSS3 功能的 Chrome 旧版本,过时技术的溢价定价从 550 美元到 1200 美元不等,产品套件支离破碎,需要为合并、安全和拆分提供单独的许可证。 本综合指南提供了从ExpertPdf逐步迁移到IronPDF的路径--IronPDF 是一个现代的 .NET PDF 库,具有最新的 Chromium 渲染、每月更新和一体化软件包架构。

为什么要从ExpertPdf迁移到 IronPDF? ExpertPdf 带来了一些挑战,促使开发团队对现代替代方案进行评估。 了解这些问题对于规划迁移策略至关重要。 ###ExpertPdf的问题 1.**Documentation Frozen Since 2018**:ExpertPdf 的文档已有 6 年多未更新。 随着 .NET 生态系统的发展,查找最新信息、示例和最佳实践变得越来越困难。 2.**过时的 Chrome 浏览器版本**:ExpertPdf 依靠传统版本的 Chrome 浏览器进行渲染。 现代 CSS3 功能(Flexbox、网格、CSS 变量)可能无法正确呈现,并且未应用安全补丁。 3.**传统技术的高级定价**:ExpertPdf 每个许可证的价格在 550 美元到 1,200 美元之间,在提供过时的渲染技术的同时还收取高昂的费用。 4.**Fragmented Product Suite**:ExpertPdf 针对不同的功能销售单独的软件包--HtmlToPdf Converter、PDF Merger、PDF Security、PDF Splitter 和 PDF to Image--每个软件包都需要单独的许可。 5.**有限的现代 .NET 支持**:虽然ExpertPdf拥有 .NET Core 包,但它们落后于现代 .NET 版本和实践。 ### 架构比较 |方面|ExpertPdf|IronPDF| |--------|-----------|---------| |**文档**|自 2018 年起冻结|持续更新| |**渲染引擎**|传统 Chrome 浏览器|最新 Chromium| |**CSS支持**|有限的 CSS3|完整的 CSS3(Flexbox、网格)| |**价格**|$550-$1,200|有竞争力的定价| |**更新频率**|不经常|每月发布| |**产品模型**|零散(5 个以上 DLL)|一体化库| |**现代.NET**| 有限的 |.NET 6/7/8/9+ 原生语言| |**支持同步**| 有限的 |完整的异步/等待| ### 主要迁移优势 1.**现代渲染**:最新 Chromium 引擎实现完美像素输出 2.**一体化软件包**:集 PDF 生成、合并、安全、提取于一体的 NuGet 3.**主动开发**:每月更新新功能和安全补丁 4.**更好的文档**:全面的教程和示例 5.**真正的跨平台**:支持 Windows、Linux、macOS 和 Docker ## 迁移前准备 ### 前提条件 确保您的环境符合这些要求: - .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/)免费试用) ### AuditExpertPdf的用法 在解决方案目录中运行这些命令,以识别所有ExpertPdf引用: ```bash # Find allExpertPdfreferences grep -r "ExpertPdf\|PdfConverter\|PDFMerge\|PdfSecurityManager" --include="*.cs" . # Check NuGet packages dotnet list package | grep -i "ExpertPdf" ``` 常见的ExpertPdf软件包: - `ExpertPdf.HtmlToPdf` - HTML 到 PDF 的转换 - `ExpertPdf.PDFMerge` - PDF 合并 - `ExpertPdf.PDFSecurity` - 加密和密码 - `ExpertPdf.PDFSplit` - PDF 分割 - `ExpertPdf.PdfToImage` - PDF 到图像的转换 ### 了解核心模式变更 ExpertPdf 使用<代码>PDFConverterChromePdfRendererPDFConverterChromePdfRendererPdfDocumentOptionsChromePdfRenderOptionsPdfHeaderOptionsTextHeaderFooter或<代码>HtmlHeaderFooterPdfFooterOptionsTextHeaderFooter或<代码>HtmlHeaderFooterPDFMergePdfDocument.Merge()pdfConverter.GetPdfBytesFromHtmlString(html)renderer.RenderHtmlAsPdf(html).BinaryDatapdfConverter.GetPdfBytesFromUrl(url)renderer.RenderUrlAsPdf(url).BinaryDatapdfConverter.GetPdfBytesFromHtmlFile(path)renderer.RenderHtmlFileAsPdf(path).BinaryDatapdfConverter.SavePdfFromUrlToFile(url,路径)renderer.RenderUrlAsPdf(url).SaveAs(path)PdfDocumentOptions.PdfPageSize = PdfPageSize.A4PaperSize = PdfPaperSize.A4PdfDocumentOptions.PdfPageOrientation = PortraitPaperOrientation = PdfPaperOrientation.PortraitPdfDocumentOptions.MarginTop页边距PdfHeaderOptions.HeaderTextTextHeader.CenterTextPdfFooterOptions.FooterTextTextFooter.RightText{总页数}Hello World

This is a PDF document.

"); // Save to file System.IO.File.WriteAllBytes("output.pdf", pdfBytes); Console.WriteLine("PDF created successfully!"); } } ``` **IronPDF 实现:** ```csharp // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { // Create a PDF from HTML string var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("

Hello World

This is a PDF document.

"); // Save to file pdf.SaveAs("output.pdf"); Console.WriteLine("PDF created successfully!"); } } ``` IronPDF 的方法会返回一个 `PdfDocument` 对象,在保存之前可以进行其他操作(合并、水印、安全)。 有关更多选项,请参阅 [HTML 转 PDF 文档](https://ironpdf.com/how-to/html-file-to-pdf/)。 ### 将 URL 转换为带有页面设置的 PDF 文件 **ExpertPdf 的实现:** ```csharp // NuGet: Install-Package ExpertPdf.HtmlToPdf using ExpertPdf.HtmlToPdf; using System; class Program { static void Main() { // Create the PDF converter PdfConverter pdfConverter = new PdfConverter(); // Set page size and orientation pdfConverter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4; pdfConverter.PdfDocumentOptions.PdfPageOrientation = PdfPageOrientation.Portrait; // Convert URL to PDF byte[] pdfBytes = pdfConverter.GetPdfBytesFromUrl("https://www.example.com"); // Save to file System.IO.File.WriteAllBytes("webpage.pdf", pdfBytes); Console.WriteLine("PDF from URL created successfully!"); } } ``` **IronPDF 实现:** ```csharp // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { // Create a PDF renderer var renderer = new ChromePdfRenderer(); // Set page size and orientation renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait; // Convert URL to PDF var pdf = renderer.RenderUrlAsPdf("https://www.example.com"); // Save to file pdf.SaveAs("webpage.pdf"); Console.WriteLine("PDF from URL created successfully!"); } } ``` IronPDF 的 `RenderingOptions` 为页面配置提供了直接的属性访问。 有关更多选项,请参阅 [URL to PDF 文档](https://ironpdf.com/how-to/url-to-pdf/)。 ### 带页码的页眉和页脚 本示例展示了页眉/页脚配置的关键区别--ExpertPdf 使用单独的<代码>PdfHeaderOptionsPdfFooterOptions点 / 72 * 25.4 = 毫米
Curtis Chau
技术作家

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

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