迁移指南 如何用 C# 从 Winnovative 迁移到 IronPDF Curtis Chau 已发布:2026年2月1日 下载 IronPDF NuGet 下载 DLL 下载 Windows 安装程序 免费试用 法学硕士副本 法学硕士副本 将页面复制为 Markdown 格式,用于 LLMs 在 ChatGPT 中打开 向 ChatGPT 咨询此页面 在双子座打开 向 Gemini 询问此页面 在 Grok 中打开 向 Grok 询问此页面 打开困惑 向 Perplexity 询问有关此页面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 复制链接 电子邮件文章 Winnovative 一直是.NET PDF 生成领域公认的知名企业,为 C# 应用程序提供 HTML 到 PDF 的转换功能。 然而,该库依赖于 2016 年的 WebKit 引擎,这给现代网络开发带来了巨大挑战。 网格布局、现代 JavaScript 语法等现代 CSS 功能以及 Bootstrap 5 和 Tailwind CSS 等流行框架经常无法正确呈现,甚至根本无法呈现。 本指南提供了从Winnovative到IronPDF的完整迁移路径,为评估这一过渡的专业 .NET 开发人员提供了分步说明、代码比较和实用示例。 为什么要从Winnovative迁移? Winnovative 依靠的是 2016 年的 WebKit 引擎,这给现代网络应用带来了严重问题: 不支持 CSS Grid: Bootstrap 5、Tailwind CSS 和现代布局完全失效。 任何使用 CSS 网格的页面都不会按预期呈现。 Flexbox实现存在缺陷:与现代浏览器相比,渲染效果不一致。 开发人员经常要花费数小时来调试只存在于Winnovative中的布局问题。 仅限 ES5 JavaScript:现代 ES6+ JavaScript 特性(箭头函数、async/await、类)会静默失败。 这意味着 React、Vue 和其他现代框架经常会产生错误的输出。 发展停滞:尽管"Winnovative"这个名字暗示着创新,但该产品近年来几乎没有更新。 字体渲染问题:网页字体和自定义字体经常渲染不正确或根本无法渲染。 安全隐患: 2016 年的 WebKit 引擎缺乏多年的安全补丁和漏洞修复。 现实世界的影响 现代 CSS 和 JavaScript 在Winnovative中根本无法运行: <div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px;"> <div>Column 1</div> <div>Column 2</div> <div>Column 3</div> </div> <script> const items = data.map(item => item.name); // Arrow functions: FAIL const result = await fetchData(); // Async/await: FAIL class Report { } // Classes: FAIL </script> <div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px;"> <div>Column 1</div> <div>Column 2</div> <div>Column 3</div> </div> <script> const items = data.map(item => item.name); // Arrow functions: FAIL const result = await fetchData(); // Async/await: FAIL class Report { } // Classes: FAIL </script> HTML IronPDFvs Winnovative:功能对比 了解架构差异有助于技术决策者评估迁移投资: 方面 Winnovative IronPDF 渲染引擎 WebKit (2016) Chromium (当前) CSS 网格 不支持 全面支持 Flexbox 错误 全面支持 JavaScript语言 仅限 ES5 ES2024 Bootstrap 5. 破译 全面支持 Tailwind CSS 尾风 CSS 不支持 全面支持 React/VueSSR 问题 完美运行 网络字体 不可靠 全面支持 更新 不经常 每月 价格 $750-$1,600 竞争力 快速入门:Winnovative 向IronPDF迁移 迁移工作可以通过以下基本步骤立即开始。 步骤 1:替换 NuGet 软件包 删除所有Winnovative软件包: # Remove Winnovative dotnet remove package Winnovative.WebKitHtmlToPdf dotnet remove package Winnovative.HtmlToPdf dotnet remove package Winnovative.WebToPdfConverter # Remove Winnovative dotnet remove package Winnovative.WebKitHtmlToPdf dotnet remove package Winnovative.HtmlToPdf dotnet remove package Winnovative.WebToPdfConverter SHELL 安装 IronPDF: # Install IronPDF dotnet add package IronPdf # Install IronPDF dotnet add package IronPdf SHELL 步骤 2:更新命名空间 用 IronPdf 命名空间替换Winnovative命名空间: // Before (Winnovative) using Winnovative; using Winnovative.WebKit; // After (IronPDF) using IronPdf; // Before (Winnovative) using Winnovative; using Winnovative.WebKit; // After (IronPDF) using IronPdf; $vbLabelText $csharpLabel 步骤 3:初始化许可证 在应用程序启动时添加许可证初始化: IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; $vbLabelText $csharpLabel 代码迁移示例 将HTML转换为PDF 最常见的使用案例展示了这些 .NET PDF 库之间的 API 差异。 创新方法: // NuGet: Install-Package Winnovative.WebToPdfConverter using Winnovative; using System; class Program { static void Main() { // Create the HTML to PDF converter HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter(); // Set license key htmlToPdfConverter.LicenseKey = "your-license-key"; // Convert HTML string to PDF string htmlString = "<html><body><h1>Hello World</h1></body></html>"; byte[] pdfBytes = htmlToPdfConverter.ConvertHtml(htmlString, ""); // Save to file System.IO.File.WriteAllBytes("output.pdf", pdfBytes); Console.WriteLine("PDF created successfully"); } } // NuGet: Install-Package Winnovative.WebToPdfConverter using Winnovative; using System; class Program { static void Main() { // Create the HTML to PDF converter HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter(); // Set license key htmlToPdfConverter.LicenseKey = "your-license-key"; // Convert HTML string to PDF string htmlString = "<html><body><h1>Hello World</h1></body></html>"; byte[] pdfBytes = htmlToPdfConverter.ConvertHtml(htmlString, ""); // Save to file System.IO.File.WriteAllBytes("output.pdf", pdfBytes); Console.WriteLine("PDF created successfully"); } } $vbLabelText $csharpLabel IronPdf 方法: // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { // Create a PDF renderer var renderer = new ChromePdfRenderer(); // Convert HTML string to PDF string htmlString = "<html><body><h1>Hello World</h1></body></html>"; var pdf = renderer.RenderHtmlAsPdf(htmlString); // Save to file pdf.SaveAs("output.pdf"); Console.WriteLine("PDF created successfully"); } } // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { // Create a PDF renderer var renderer = new ChromePdfRenderer(); // Convert HTML string to PDF string htmlString = "<html><body><h1>Hello World</h1></body></html>"; var pdf = renderer.RenderHtmlAsPdf(htmlString); // Save to file pdf.SaveAs("output.pdf"); Console.WriteLine("PDF created successfully"); } } $vbLabelText $csharpLabel Winnovative 需要创建一个HtmlToPdfConverter实例,在该实例上设置许可证密钥,调用 ConvertHtml() 并使用空的基本 URL 参数,接收原始字节并手动写入文件。IronPDF 简化了这一切:创建一个 ChromePdfRenderer, 调用 RenderHtmlAsPdf(), 并使用内置的 SaveAs() 方法。 有关 HTML 转 PDF 的高级应用场景,请参阅 HTML 转 PDF 指南。 将 URL 转换为 PDF URL 到 PDF 的转换显示出类似的模式。 创新方法: // NuGet: Install-Package Winnovative.WebToPdfConverter using Winnovative; using System; class Program { static void Main() { // Create the HTML to PDF converter HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter(); // Set license key htmlToPdfConverter.LicenseKey = "your-license-key"; // Convert URL to PDF string url = "https://www.example.com"; byte[] pdfBytes = htmlToPdfConverter.ConvertUrl(url); // Save to file System.IO.File.WriteAllBytes("webpage.pdf", pdfBytes); Console.WriteLine("PDF from URL created successfully"); } } // NuGet: Install-Package Winnovative.WebToPdfConverter using Winnovative; using System; class Program { static void Main() { // Create the HTML to PDF converter HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter(); // Set license key htmlToPdfConverter.LicenseKey = "your-license-key"; // Convert URL to PDF string url = "https://www.example.com"; byte[] pdfBytes = htmlToPdfConverter.ConvertUrl(url); // Save to file System.IO.File.WriteAllBytes("webpage.pdf", pdfBytes); Console.WriteLine("PDF from URL created successfully"); } } $vbLabelText $csharpLabel IronPdf 方法: // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { // Create a PDF renderer var renderer = new ChromePdfRenderer(); // Convert URL to PDF string url = "https://www.example.com"; var pdf = renderer.RenderUrlAsPdf(url); // Save to file pdf.SaveAs("webpage.pdf"); Console.WriteLine("PDF from URL created successfully"); } } // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { // Create a PDF renderer var renderer = new ChromePdfRenderer(); // Convert URL to PDF string url = "https://www.example.com"; var pdf = renderer.RenderUrlAsPdf(url); // Save to file pdf.SaveAs("webpage.pdf"); Console.WriteLine("PDF from URL created successfully"); } } $vbLabelText $csharpLabel Winnovative 使用 ConvertUrl() 返回必须手动保存的字节。IronPDF提供了 RenderUrlAsPdf() 与PDF 文档对象,其中包含 SaveAs() 以方便使用。 请浏览 URL to PDF 文档,了解身份验证和自定义页眉选项。 添加页眉和页脚 页眉和页脚显示了显著的架构差异。Winnovative采用基于元素的编程方法,使用文本元素对象,而IronPDF则使用基于 HTML 的标题和占位符标记。 创新方法: // NuGet: Install-Package Winnovative.WebToPdfConverter using Winnovative; using System; using System.Drawing; class Program { static void Main() { // Create the HTML to PDF converter HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter(); // Set license key htmlToPdfConverter.LicenseKey = "your-license-key"; // Enable header htmlToPdfConverter.PdfDocumentOptions.ShowHeader = true; htmlToPdfConverter.PdfHeaderOptions.HeaderHeight = 60; // Add header text TextElement headerText = new TextElement(0, 0, "Document Header", new Font("Arial", 12)); htmlToPdfConverter.PdfHeaderOptions.AddElement(headerText); // Enable footer htmlToPdfConverter.PdfDocumentOptions.ShowFooter = true; htmlToPdfConverter.PdfFooterOptions.FooterHeight = 60; // Add footer with page number TextElement footerText = new TextElement(0, 0, "Page &p; of &P;", new Font("Arial", 10)); htmlToPdfConverter.PdfFooterOptions.AddElement(footerText); // Convert HTML to PDF string htmlString = "<html><body><h1>Document with Header and Footer</h1><p>Content goes here</p></body></html>"; byte[] pdfBytes = htmlToPdfConverter.ConvertHtml(htmlString, ""); // Save to file System.IO.File.WriteAllBytes("document.pdf", pdfBytes); Console.WriteLine("PDF with header and footer created successfully"); } } // NuGet: Install-Package Winnovative.WebToPdfConverter using Winnovative; using System; using System.Drawing; class Program { static void Main() { // Create the HTML to PDF converter HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter(); // Set license key htmlToPdfConverter.LicenseKey = "your-license-key"; // Enable header htmlToPdfConverter.PdfDocumentOptions.ShowHeader = true; htmlToPdfConverter.PdfHeaderOptions.HeaderHeight = 60; // Add header text TextElement headerText = new TextElement(0, 0, "Document Header", new Font("Arial", 12)); htmlToPdfConverter.PdfHeaderOptions.AddElement(headerText); // Enable footer htmlToPdfConverter.PdfDocumentOptions.ShowFooter = true; htmlToPdfConverter.PdfFooterOptions.FooterHeight = 60; // Add footer with page number TextElement footerText = new TextElement(0, 0, "Page &p; of &P;", new Font("Arial", 10)); htmlToPdfConverter.PdfFooterOptions.AddElement(footerText); // Convert HTML to PDF string htmlString = "<html><body><h1>Document with Header and Footer</h1><p>Content goes here</p></body></html>"; byte[] pdfBytes = htmlToPdfConverter.ConvertHtml(htmlString, ""); // Save to file System.IO.File.WriteAllBytes("document.pdf", pdfBytes); Console.WriteLine("PDF with header and footer created successfully"); } } $vbLabelText $csharpLabel IronPdf 方法: // NuGet: Install-Package IronPdf using IronPdf; using IronPdf.Rendering; using System; class Program { static void Main() { // Create a PDF renderer var renderer = new ChromePdfRenderer(); // Configure header and footer renderer.RenderingOptions.TextHeader = new TextHeaderFooter() { CenterText = "Document Header", FontSize = 12 }; renderer.RenderingOptions.TextFooter = new TextHeaderFooter() { CenterText = "Page {page} of {total-pages}", FontSize = 10 }; // Convert HTML to PDF string htmlString = "<html><body><h1>Document with Header and Footer</h1><p>Content goes here</p></body></html>"; var pdf = renderer.RenderHtmlAsPdf(htmlString); // Save to file pdf.SaveAs("document.pdf"); Console.WriteLine("PDF with header and footer created successfully"); } } // NuGet: Install-Package IronPdf using IronPdf; using IronPdf.Rendering; using System; class Program { static void Main() { // Create a PDF renderer var renderer = new ChromePdfRenderer(); // Configure header and footer renderer.RenderingOptions.TextHeader = new TextHeaderFooter() { CenterText = "Document Header", FontSize = 12 }; renderer.RenderingOptions.TextFooter = new TextHeaderFooter() { CenterText = "Page {page} of {total-pages}", FontSize = 10 }; // Convert HTML to PDF string htmlString = "<html><body><h1>Document with Header and Footer</h1><p>Content goes here</p></body></html>"; var pdf = renderer.RenderHtmlAsPdf(htmlString); // Save to file pdf.SaveAs("document.pdf"); Console.WriteLine("PDF with header and footer created successfully"); } } $vbLabelText $csharpLabel Winnovative 要求通过 PdfDocumentOptions.ShowHeader 启用页眉/页脚,设置高度,创建具有坐标位置的文本元素对象和 System.Drawing.Font 对象,并使用 &p; 和 &P; 占位符。 IronPdf 使用 TextHeaderFooter 对象,该对象具有 CenterText 和 FontSize 等简单属性,以及 {page} 和 {total-pages} 等直观占位符。 有关基于 HTML 并带有完整 CSS 样式的页眉,请参阅 页眉和页脚文档。 创新 API 到IronPDF映射参考 这种映射通过显示直接的 API 对应关系来加速迁移: Winnovative Class IronPdf 同等产品 备注 HtmlToPdfConverter ChromePdfRenderer 主要转换类 PDF 文档 PDF 文档 PDF 操作 PdfDocumentOptions 渲染选项 配置 PdfHeaderOptions HtmlHeaderFooter 标题 PdfFooterOptions HtmlHeaderFooter 页脚 文本元素 HtmlFragment 中的 HTML 文本定位 图像元素 HTML <img> 图片位置 方法映射 Winnovative 方法 IronPdf 方法 ConvertUrl(url) RenderUrlAsPdf(url) ConvertUrlToFile(url, 路径) RenderUrlAsPdf(url).SaveAs(path) ConvertHtml(html,baseUrl) RenderHtmlAsPdf(html) ConvertHtmlToFile(html, 路径) RenderHtmlAsPdf(html).SaveAs(path) ConvertHtmlFile(路径) RenderHtmlFileAsPdf(path) MergePdf(流) PdfDocument.Merge(pdfs) AppendPdf(pdf) pdf1.AppendPdf(pdf2) 选项映射 Winnovative 选项 IronPdf 选项 PdfPageSize.A4 PaperSize = PdfPaperSize.A4 PdfPageSize.Letter PaperSize = PdfPaperSize.Letter PdfPageOrientation.Portrait PaperOrientation = PdfPaperOrientation.Portrait PdfPageOrientation.Landscape PdfPaperOrientation = PdfPaperOrientation.Landscape 顶边距 = 20 MarginTop = 20 BottomMargin = 20 MarginBottom = 20 LeftMargin = 15 边距左 = 15 右边距 = 15 MarginRight = 15 ShowHeader = true 设置 HtmlHeader 属性 ShowFooter = true 设置 HtmlFooter 属性 JavaScriptEnabled = true EnableJavaScript = true 页码 &p; 页码 {page} 总页数 &P; 总页数 {total-pages} 常见迁移问题和解决方案 问题 1:CSS 布局看起来与众不同 症状:在Winnovative中看起来 "还行 "的布局,在IronPDF中看起来却不一样。 起因:Winnovative的 2016 WebKit 存在渲染错误,开发人员正在解决这些问题。IronPDF可根据现代标准正确渲染。 解决方案:删除Winnovative特有的 CSS hack,使用标准 CSS: // Clean up legacy CSS string cleanedHtml = html .Replace("-webkit-flex", "flex") .Replace("display: -webkit-box", "display: flex"); // Clean up legacy CSS string cleanedHtml = html .Replace("-webkit-flex", "flex") .Replace("display: -webkit-box", "display: flex"); $vbLabelText $csharpLabel 问题 2:JavaScript 无法执行 症状:动态内容未显示在 PDF 中。 原因:需要明确配置 JavaScript 等待选项。 解决方案: renderer.RenderingOptions.EnableJavaScript = true; renderer.RenderingOptions.WaitFor.JavaScript(5000); // Or wait for specific element renderer.RenderingOptions.WaitFor.HtmlElementById("content-ready", 10000); renderer.RenderingOptions.EnableJavaScript = true; renderer.RenderingOptions.WaitFor.JavaScript(5000); // Or wait for specific element renderer.RenderingOptions.WaitFor.HtmlElementById("content-ready", 10000); $vbLabelText $csharpLabel 问题 3:基础 URL 无法使用 症状:图像和 CSS 的相对 URL 无法解析。 原因:IronPDF 需要明确的基础 URL 配置。 解决方案: renderer.RenderingOptions.BaseUrl = new Uri("https://example.com/"); renderer.RenderingOptions.BaseUrl = new Uri("https://example.com/"); $vbLabelText $csharpLabel 问题 4:不同的分页符 症状:内容在与Winnovative不同的地方中断。 原因:不同的呈现引擎处理分页符的方式不同。 解决方案:使用明确的 CSS 分页控件: /* Control page breaks explicitly */ .no-break { page-break-inside: avoid; } .page-break-before { page-break-before: always; } .page-break-after { page-break-after: always; } 问题 5:字体看起来不同 症状:文本显示的字体与预期的不同。 原因:IronPDF使用系统字体; 网络字体需要明确加载。 解决方案: <style> @import url('https://fonts.googleapis.com/css2?family=Roboto&display=swap'); body { font-family: 'Roboto', Arial, sans-serif; } </style> <style> @import url('https://fonts.googleapis.com/css2?family=Roboto&display=swap'); body { font-family: 'Roboto', Arial, sans-serif; } </style> HTML 创新迁移清单 迁移前任务 审核您的代码库,确定所有Winnovative的用法: # Find allWinnovativereferences grep -r "Winnovative" --include="*.cs" . grep -r "HtmlToPdfConverter" --include="*.cs" . grep -r "PdfDocumentOptions" --include="*.cs" . grep -r "ConvertUrl\|ConvertHtml" --include="*.cs" . # Find allWinnovativereferences grep -r "Winnovative" --include="*.cs" . grep -r "HtmlToPdfConverter" --include="*.cs" . grep -r "PdfDocumentOptions" --include="*.cs" . grep -r "ConvertUrl\|ConvertHtml" --include="*.cs" . SHELL 记录当前配置,包括页面大小、页边距和页眉/页脚设置。 确定可以删除的 CSS 变通方法(webkit 前缀、浮动网格)。 请注意 JavaScript 兼容性要求。 代码更新任务 1.删除WinnovativeNuGet 软件包 2.安装 IronPdf NuGet 软件包 3.将所有名称空间导入从 Winnovative 更新为 IronPdf 4.将HtmlToPdfConverter替换为ChromePdfRenderer 5.将ConvertHtml()调用转换为RenderHtmlAsPdf()调用 6.将ConvertUrl()调用转换为RenderUrlAsPdf()调用 7.将页面大小/方向设置更新为RenderingOptions 8.转换保证金配置 9.将基于文本元素的页眉/页脚迁移为基于 HTML 的TextHeaderFooter 10.将页码占位符从&p;/&P;更新为{page}/{total-pages}`。 11.在启动时添加 IronPdf 许可证初始化功能 迁移后测试 迁移后,验证这些方面: 测试 HTML 到 PDF 的基本转换 测试 URL 到 PDF 的转换 验证 CSS 网格布局是否能正确呈现(它们现在可以工作了) 验证 Flexbox 布局是否正确呈现(它们现在可以工作了) 使用现代 ES6+ 语法测试 JavaScript 繁重的页面 验证 Bootstrap 5 兼容性 测试页眉/页脚渲染 验证分页符 比较 PDF 输出质量 清理任务 删除WinnovativeCSS 变通方法(webkit 前缀) 将 ES5 JavaScript 更新为现代语法 移除基于浮点的网格回退 更新文档 迁移到IronPDF的主要优势 从Winnovative迁移到IronPDF有几个关键优势: 现代渲染引擎:IronPDF使用最新的 Chromium 引擎,确保完全支持 CSS3、CSS Grid、Flexbox 和ES2024JavaScript。 现代框架,如 Bootstrap 5、Tailwind CSS 和 React/Vue 均能正确呈现。 简化 API:基于 HTML 的页眉和页脚取代了程序化的TextElement定位。 以 {page} 等直观的占位符取代晦涩难懂的 &p; 语法。 内置的 SaveAs() 方法无需手动处理字节。 积极开发:随着 .NET 10 和 C# 14 的普及,IronPDF 的每月更新确保了与当前和未来 .NET 版本的兼容性。 现代 CSS 无需变通方法: CSS Grid、Flexbox 和现代排版无需 webkit 前缀或基于浮动的回退方案即可工作。 现代 JavaScript: ES6+ 特性,包括箭头函数、async/await、类和模块,都能正确执行。 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# 从 wkhtmltopdf 迁移到 IronPDF如何用 C# 从 WebView2 迁移到...
已发布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 渲染。包括替换图形基元和自动布局的代码示例。 阅读更多