如何用 C# 从 Telerik Document Processing 迁移到 IronPDF
Telerik Document Processing 作为 Telerik UI 套件和 DevCraft 捆绑包的一部分发布,为开发者提供 PDF 生成功能,同时处理 Word、Excel 和 PowerPoint。 然而,随着现代网络标准的演变和项目对全 CSS3、Flexbox 和 Bootstrap 支持的需求,开发团队对 Telerik 的 HTML 转 PDF 渲染架构的限制提出了担忧。
本指南提供了从Telerik 文档处理到IronPDF的完整迁移路径,包括分步说明、代码比较以及直接取自真实迁移场景的实用示例。
为什么要从 Telerik 文档处理迁移
从Telerik 文档处理迁移的决定通常源于在处理现代网络内容时出现的技术限制。 了解这些限制有助于证明迁移工作的合理性,并为IronPDF解决的问题设定期望值。
报告的技术限制
开发者报告了Telerik 文档处理在处理现代 HTML 和 CSS 时出现的问题:
| 问题 | 影响 | IronPDF 解决方案 |
|---|---|---|
| CSS 解析限制 | 现代 CSS 框架(如 Bootstrap)失败 | 完全支持 Chromium CSS |
| 分段转换 | HTML 结构扁平化,布局中断 | 直接 HTML 渲染 |
| 流程文档模型 | 强制中间转换 | 本地 HTML 到 PDF |
| 外部 CSS 问题 | 忽略复杂的选择器 | 完全支持 CSS 文件 |
| 内存问题 | OutOfMemoryException 在大文件上报告 |
高效流 |
核心问题:HTML 无法正确渲染
在生成 PDF 之前,Telerik Document Processing 会将 HTML 转换为中间的 "流程文档 "模型。 这一架构决策会产生一系列问题:
- 扁平化HTML结构——元素变为段落 2.忽略现代 CSS - Flexbox 和网格布局完全失效 3.Breaks Bootstrap - 列系统不以列的形式呈现 4.丢失格式 - 忽略复杂的 CSS 选择器
考虑使用标准 CSS 布局的现代 HTML:
<div class="container"> <div class="row"> <div class="col-md-6">Column 1</div> <div class="col-md-6">Column 2</div> </div> </div> <div style="display: flex; gap: 20px;"> <div style="flex: 1;">Flex Item 1</div> <div style="flex: 1;">Flex Item 2</div> </div> <div style="display: grid; grid-template-columns: repeat(3, 1fr);"> <div>Grid Item 1</div> <div>Grid Item 2</div> <div>Grid Item 3</div> </div><div class="container"> <div class="row"> <div class="col-md-6">Column 1</div> <div class="col-md-6">Column 2</div> </div> </div> <div style="display: flex; gap: 20px;"> <div style="flex: 1;">Flex Item 1</div> <div style="flex: 1;">Flex Item 2</div> </div> <div style="display: grid; grid-template-columns: repeat(3, 1fr);"> <div>Grid Item 1</div> <div>Grid Item 2</div> <div>Grid Item 3</div> </div>HTML在 Telerik 文档处理中,所有这些布局都以连续段落的形式呈现。双列 Bootstrap 布局变成了两行文本。 Flexbox 项目垂直堆叠。 CSS 网格项目一个接一个地出现。
在 Telerik 文档处理中失效的 CSS 功能
开发人员记录了大量 CSS 兼容性问题:
/* ❌ These CSS features DON'T WORK inTelerik 文档处理*/ /* Flexbox - 不支持 */ .container { display: flex; } .item { flex: 1; } /* CSS Grid - 不支持 */ .grid { display: grid; grid-template-columns: repeat(3, 1fr); } /* Bootstrap columns - Converted to paragraphs */ .col-md-6 { /* Ignored, becomes linear text */ } /* CSS Variables - 不支持 */ :root { --primary: #007bff; } .btn { color: var(--primary); } /* Complex selectors - Often ignored */ .container > .row:first-child { } .item:hover { } .content::before { } /* Modern units - Limited support */ .box { width: calc(100% - 20px); } .text { font-size: 1.2rem; }大文档的性能报告
超越CSS限制,开发者报告了在使用Telerik Document Processing处理大文件时的
OutOfMemoryException错误,同时在某些情况下,合并PDF时出现不支持的颜色空间和崩溃。 处理高卷文档生成的团队注意到了需要在长期使用前评估的稳定性问题。IronPDF与 Telerik 文档处理:功能比较
了解功能差异有助于技术决策者评估迁移投资:
特征 Telerik 文档处理 IronPDF HTML 渲染 流程文档转换 直接 Chromium 渲染 CSS3 支持。 内容有限,许多功能无法实现 完整的 CSS3 Flexbox 不支持 支持 CSS 网格 不支持 支持 脚本 破损(div 扁平化) 支持 Bootstrap 5 外部 CSS。 部分翻译 支持 JavaScript语言 不支持 全面支持 大型文档 报告的内存问题 高效流 API 复杂性 复杂(提供商、模型) 简单(一类) 许可模式 商业,DevCraft 的一部分 简单的独立许可 快速启动迁移:5 分钟完成您的第一个 PDF.
从Telerik 文档处理迁移到IronPDF的工作可以立即开始。 以下是使用IronPDF生成第一个 PDF 的最快途径。
步骤 1:更新 NuGet 软件包
删除所有 Telerik 文档处理包:
# Remove Telerik packages dotnet remove package Telerik.Documents.Core dotnet remove package Telerik.Documents.Flow dotnet remove package Telerik.Documents.Flow.FormatProviders.Pdf dotnet remove package Telerik.Documents.Fixed# Remove Telerik packages dotnet remove package Telerik.Documents.Core dotnet remove package Telerik.Documents.Flow dotnet remove package Telerik.Documents.Flow.FormatProviders.Pdf dotnet remove package Telerik.Documents.FixedSHELL安装 IronPDF:
# Install IronPDF dotnet add package IronPdf# Install IronPDF dotnet add package IronPdfSHELL步骤 2:更新 Using 语句
用IronPDF命名空间替换 Telerik 命名空间:
// Before (Telerik Document Processing) using Telerik.Windows.Documents.Flow.FormatProviders.Html; using Telerik.Windows.Documents.Flow.FormatProviders.Pdf; using Telerik.Windows.Documents.Flow.Model; using Telerik.Documents.Primitives; // After (IronPDF) using IronPdf;// Before (Telerik Document Processing) using Telerik.Windows.Documents.Flow.FormatProviders.Html; using Telerik.Windows.Documents.Flow.FormatProviders.Pdf; using Telerik.Windows.Documents.Flow.Model; using Telerik.Documents.Primitives; // After (IronPDF) using IronPdf;Imports Telerik.Windows.Documents.Flow.FormatProviders.Html Imports Telerik.Windows.Documents.Flow.FormatProviders.Pdf Imports Telerik.Windows.Documents.Flow.Model Imports Telerik.Documents.Primitives ' After (IronPDF) Imports IronPdf$vbLabelText $csharpLabel步骤 3:添加许可证密钥
在应用程序启动时初始化许可证:
// Add at application startup IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";// Add at application startup IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";' Add at application startup IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"$vbLabelText $csharpLabel步骤 4:更新您的 PDF 生成代码
从Telerik 文档处理到IronPDF的转变极大地简化了您的代码库。
之前(Telerik 文档处理):
using Telerik.Windows.Documents.Flow.FormatProviders.Html; using Telerik.Windows.Documents.Flow.FormatProviders.Pdf; using Telerik.Windows.Documents.Flow.Model; HtmlFormatProvider htmlProvider = new HtmlFormatProvider(); RadFlowDocument document = htmlProvider.Import(htmlContent); PdfFormatProvider pdfProvider = new PdfFormatProvider(); byte[] pdfBytes = pdfProvider.Export(document); File.WriteAllBytes("output.pdf", pdfBytes);using Telerik.Windows.Documents.Flow.FormatProviders.Html; using Telerik.Windows.Documents.Flow.FormatProviders.Pdf; using Telerik.Windows.Documents.Flow.Model; HtmlFormatProvider htmlProvider = new HtmlFormatProvider(); RadFlowDocument document = htmlProvider.Import(htmlContent); PdfFormatProvider pdfProvider = new PdfFormatProvider(); byte[] pdfBytes = pdfProvider.Export(document); File.WriteAllBytes("output.pdf", pdfBytes);Imports Telerik.Windows.Documents.Flow.FormatProviders.Html Imports Telerik.Windows.Documents.Flow.FormatProviders.Pdf Imports Telerik.Windows.Documents.Flow.Model Dim htmlProvider As New HtmlFormatProvider() Dim document As RadFlowDocument = htmlProvider.Import(htmlContent) Dim pdfProvider As New PdfFormatProvider() Dim pdfBytes As Byte() = pdfProvider.Export(document) File.WriteAllBytes("output.pdf", pdfBytes)$vbLabelText $csharpLabelAfter (IronPDF):
using IronPdf; var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(htmlContent); pdf.SaveAs("output.pdf");using IronPdf; var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(htmlContent); pdf.SaveAs("output.pdf");Imports IronPdf Dim renderer As New ChromePdfRenderer() Dim pdf = renderer.RenderHtmlAsPdf(htmlContent) pdf.SaveAs("output.pdf")$vbLabelText $csharpLabel差异一眼就能看出:3 行IronPDF代码取代了 15 行以上的 Telerik 文档处理代码。 更重要的是,IronPDF 版本将正确呈现 Telerik 的 Flow Document 模型无法处理的现代 CSS。
代码迁移示例
将HTML转换为PDF
这是 PDF 生成最常见的使用案例。Telerik 文档处理和IronPDF在架构上的差异在这次比较中变得一目了然。
Telerik 文档处理方法:
// NuGet: Install-Package Telerik.Documents.Flow // NuGet: Install-Package Telerik.Documents.Flow.FormatProviders.Pdf using Telerik.Windows.Documents.Flow.FormatProviders.Html; using Telerik.Windows.Documents.Flow.FormatProviders.Pdf; using Telerik.Windows.Documents.Flow.Model; using System.IO; string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>"; HtmlFormatProvider htmlProvider = new HtmlFormatProvider(); RadFlowDocument document = htmlProvider.Import(html); PdfFormatProvider pdfProvider = new PdfFormatProvider(); using (FileStream output = File.OpenWrite("output.pdf")) { pdfProvider.Export(document, output); }// NuGet: Install-Package Telerik.Documents.Flow // NuGet: Install-Package Telerik.Documents.Flow.FormatProviders.Pdf using Telerik.Windows.Documents.Flow.FormatProviders.Html; using Telerik.Windows.Documents.Flow.FormatProviders.Pdf; using Telerik.Windows.Documents.Flow.Model; using System.IO; string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>"; HtmlFormatProvider htmlProvider = new HtmlFormatProvider(); RadFlowDocument document = htmlProvider.Import(html); PdfFormatProvider pdfProvider = new PdfFormatProvider(); using (FileStream output = File.OpenWrite("output.pdf")) { pdfProvider.Export(document, output); }Imports Telerik.Windows.Documents.Flow.FormatProviders.Html Imports Telerik.Windows.Documents.Flow.FormatProviders.Pdf Imports Telerik.Windows.Documents.Flow.Model Imports System.IO Dim html As String = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>" Dim htmlProvider As New HtmlFormatProvider() Dim document As RadFlowDocument = htmlProvider.Import(html) Dim pdfProvider As New PdfFormatProvider() Using output As FileStream = File.OpenWrite("output.pdf") pdfProvider.Export(document, output) End Using$vbLabelText $csharpLabelIronPDF 方法:
// NuGet: Install-Package IronPdf using IronPdf; string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>"; var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("output.pdf");// NuGet: Install-Package IronPdf using IronPdf; string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>"; var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("output.pdf");Imports IronPdf Dim html As String = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>" Dim renderer As New ChromePdfRenderer() Dim pdf = renderer.RenderHtmlAsPdf(html) pdf.SaveAs("output.pdf")$vbLabelText $csharpLabelTelerik版本需要创建一个
PdfFormatProvider,并手动管理文件流。 IronPDF的ChromePdfRenderer用一个方法调用处理整个过程。有关更高级的 HTML 转 PDF 场景,请参阅 HTML 转 PDF 指南。
将 URL 转换为 PDF
将网页截取为 PDF 显示了两个库之间的另一个显著差异。
Telerik 文档处理方法:
// NuGet: Install-Package Telerik.Documents.Flow // NuGet: Install-Package Telerik.Documents.Flow.FormatProviders.Pdf using Telerik.Windows.Documents.Flow.FormatProviders.Html; using Telerik.Windows.Documents.Flow.FormatProviders.Pdf; using Telerik.Windows.Documents.Flow.Model; using System.IO; using System.Net.Http; using System.Threading.Tasks; string url = "https://example.com"; using HttpClient client = new HttpClient(); string html = await client.GetStringAsync(url); HtmlFormatProvider htmlProvider = new HtmlFormatProvider(); RadFlowDocument document = htmlProvider.Import(html); PdfFormatProvider pdfProvider = new PdfFormatProvider(); using (FileStream output = File.OpenWrite("webpage.pdf")) { pdfProvider.Export(document, output); }// NuGet: Install-Package Telerik.Documents.Flow // NuGet: Install-Package Telerik.Documents.Flow.FormatProviders.Pdf using Telerik.Windows.Documents.Flow.FormatProviders.Html; using Telerik.Windows.Documents.Flow.FormatProviders.Pdf; using Telerik.Windows.Documents.Flow.Model; using System.IO; using System.Net.Http; using System.Threading.Tasks; string url = "https://example.com"; using HttpClient client = new HttpClient(); string html = await client.GetStringAsync(url); HtmlFormatProvider htmlProvider = new HtmlFormatProvider(); RadFlowDocument document = htmlProvider.Import(html); PdfFormatProvider pdfProvider = new PdfFormatProvider(); using (FileStream output = File.OpenWrite("webpage.pdf")) { pdfProvider.Export(document, output); }Imports Telerik.Windows.Documents.Flow.FormatProviders.Html Imports Telerik.Windows.Documents.Flow.FormatProviders.Pdf Imports Telerik.Windows.Documents.Flow.Model Imports System.IO Imports System.Net.Http Imports System.Threading.Tasks Module Module1 Sub Main() Dim url As String = "https://example.com" Using client As New HttpClient() Dim html As String = Await client.GetStringAsync(url) Dim htmlProvider As New HtmlFormatProvider() Dim document As RadFlowDocument = htmlProvider.Import(html) Dim pdfProvider As New PdfFormatProvider() Using output As FileStream = File.OpenWrite("webpage.pdf") pdfProvider.Export(document, output) End Using End Using End Sub End Module$vbLabelText $csharpLabelIronPDF 方法:
// NuGet: Install-Package IronPdf using IronPdf; string url = "https://example.com"; var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderUrlAsPdf(url); pdf.SaveAs("webpage.pdf");// NuGet: Install-Package IronPdf using IronPdf; string url = "https://example.com"; var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderUrlAsPdf(url); pdf.SaveAs("webpage.pdf");Imports IronPdf Dim url As String = "https://example.com" Dim renderer As New ChromePdfRenderer() Dim pdf = renderer.RenderUrlAsPdf(url) pdf.SaveAs("webpage.pdf")$vbLabelText $csharpLabelTelerik Document Processing 没有本机 URL 转 PDF 功能。 您必须使用
HttpClient手动获取HTML内容,在此过程中丢失外部CSS、JavaScript执行和动态内容。 IronPDF的RenderUrlAsPdf方法捕获完全呈现的页面,正如它在浏览器中出现的一样。请浏览 URL to PDF 文档,了解包括身份验证和自定义标头在内的其他选项。
合并多个 PDF 文件
PDF 合并演示了这些 .NET PDF 库之间的语言差异。
Telerik 文档处理方法:
// NuGet: Install-Package Telerik.Documents.Fixed using Telerik.Windows.Documents.Fixed.FormatProviders.Pdf; using Telerik.Windows.Documents.Fixed.Model; using System.IO; PdfFormatProvider provider = new PdfFormatProvider(); RadFixedDocument document1; using (FileStream input = File.OpenRead("document1.pdf")) { document1 = provider.Import(input); } RadFixedDocument document2; using (FileStream input = File.OpenRead("document2.pdf")) { document2 = provider.Import(input); } RadFixedDocument mergedDocument = new RadFixedDocument(); foreach (var page in document1.Pages) { mergedDocument.Pages.Add(page); } foreach (var page in document2.Pages) { mergedDocument.Pages.Add(page); } using (FileStream output = File.OpenWrite("merged.pdf")) { provider.Export(mergedDocument, output); }// NuGet: Install-Package Telerik.Documents.Fixed using Telerik.Windows.Documents.Fixed.FormatProviders.Pdf; using Telerik.Windows.Documents.Fixed.Model; using System.IO; PdfFormatProvider provider = new PdfFormatProvider(); RadFixedDocument document1; using (FileStream input = File.OpenRead("document1.pdf")) { document1 = provider.Import(input); } RadFixedDocument document2; using (FileStream input = File.OpenRead("document2.pdf")) { document2 = provider.Import(input); } RadFixedDocument mergedDocument = new RadFixedDocument(); foreach (var page in document1.Pages) { mergedDocument.Pages.Add(page); } foreach (var page in document2.Pages) { mergedDocument.Pages.Add(page); } using (FileStream output = File.OpenWrite("merged.pdf")) { provider.Export(mergedDocument, output); }Imports Telerik.Windows.Documents.Fixed.FormatProviders.Pdf Imports Telerik.Windows.Documents.Fixed.Model Imports System.IO Dim provider As New PdfFormatProvider() Dim document1 As RadFixedDocument Using input As FileStream = File.OpenRead("document1.pdf") document1 = provider.Import(input) End Using Dim document2 As RadFixedDocument Using input As FileStream = File.OpenRead("document2.pdf") document2 = provider.Import(input) End Using Dim mergedDocument As New RadFixedDocument() For Each page In document1.Pages mergedDocument.Pages.Add(page) Next For Each page In document2.Pages mergedDocument.Pages.Add(page) Next Using output As FileStream = File.OpenWrite("merged.pdf") provider.Export(mergedDocument, output) End Using$vbLabelText $csharpLabelIronPDF 方法:
// NuGet: Install-Package IronPdf using IronPdf; var pdf1 = PdfDocument.FromFile("document1.pdf"); var pdf2 = PdfDocument.FromFile("document2.pdf"); var merged = PdfDocument.Merge(pdf1, pdf2); merged.SaveAs("merged.pdf");// NuGet: Install-Package IronPdf using IronPdf; var pdf1 = PdfDocument.FromFile("document1.pdf"); var pdf2 = PdfDocument.FromFile("document2.pdf"); var merged = PdfDocument.Merge(pdf1, pdf2); merged.SaveAs("merged.pdf");Imports IronPdf Dim pdf1 = PdfDocument.FromFile("document1.pdf") Dim pdf2 = PdfDocument.FromFile("document2.pdf") Dim merged = PdfDocument.Merge(pdf1, pdf2) merged.SaveAs("merged.pdf")$vbLabelText $csharpLabelTelerik 版本需要分别导入每个文档,手动迭代页面,将它们添加到新文档中,并管理多个文件流。 IronPDF的
PdfDocument.Merge()方法在一次调用中处理所有事情。有关包括选择性页面提取在内的高级合并方案,请参阅 合并和拆分 PDF 指南。
Telerik 文档处理 API 到IronPDF的映射
本参考表通过显示直接的 API 对应关系来加快迁移速度:
Telerik 文档处理 IronPDF HtmlFormatProviderChromePdfRendererRadFlowDocument不需要 PdfFormatProviderpdf.SaveAs()RadFlowDocumentEditorHTML 操作 SectionHTML ParagraphHTML PdfExportSettingsRenderingOptionsRadFixedDocumentPdfDocument手动页面迭代 PdfDocument.Merge()处理页眉和页脚
Telerik 文档处理对页眉和页脚使用编程模型。IronPDF提供基于 HTML 的标题和动态占位符。
Telerik文档处理:
section.Headers.Default.Blocks.AddParagraph().Inlines.AddRun("Header Text"); section.Footers.Default.Blocks.AddParagraph().Inlines.AddRun("Footer Text");section.Headers.Default.Blocks.AddParagraph().Inlines.AddRun("Header Text"); section.Footers.Default.Blocks.AddParagraph().Inlines.AddRun("Footer Text");section.Headers.Default.Blocks.AddParagraph().Inlines.AddRun("Header Text") section.Footers.Default.Blocks.AddParagraph().Inlines.AddRun("Footer Text")$vbLabelText $csharpLabelIronPDF:
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center;'>Header Text</div>", MaxHeight = 25 }; renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center;'>Footer Text</div>", MaxHeight = 25 };renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center;'>Header Text</div>", MaxHeight = 25 }; renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center;'>Footer Text</div>", MaxHeight = 25 };Imports System renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With { .HtmlFragment = "<div style='text-align:center;'>Header Text</div>", .MaxHeight = 25 } renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With { .HtmlFragment = "<div style='text-align:center;'>Footer Text</div>", .MaxHeight = 25 }$vbLabelText $csharpLabelIronPDF 基于 HTML 的方法允许在页眉和页脚中使用完整的 CSS 样式,Plus 还可以为页码和日期提供动态占位符。 在 页眉和页脚文档中了解更多信息。
单位转换:DIP 转换为毫米
Telerik 文档处理使用与设备无关的像素 (DIP) 进行测量。IronPDF使用毫米。 这需要在迁移过程中进行转换:
// Telerik uses DIPs (device-independent pixels) //IronPDFuses millimeters // 1 inch = 25.4mm renderer.RenderingOptions.MarginTop = 25.4; // 1 inch renderer.RenderingOptions.MarginBottom = 25.4; // Or use the helper method for paper size renderer.RenderingOptions.SetCustomPaperSizeInInches(8.5, 11);// Telerik uses DIPs (device-independent pixels) //IronPDFuses millimeters // 1 inch = 25.4mm renderer.RenderingOptions.MarginTop = 25.4; // 1 inch renderer.RenderingOptions.MarginBottom = 25.4; // Or use the helper method for paper size renderer.RenderingOptions.SetCustomPaperSizeInInches(8.5, 11);' Telerik uses DIPs (device-independent pixels) ' IronPDF uses millimeters ' 1 inch = 25.4mm renderer.RenderingOptions.MarginTop = 25.4 ' 1 inch renderer.RenderingOptions.MarginBottom = 25.4 ' Or use the helper method for paper size renderer.RenderingOptions.SetCustomPaperSizeInInches(8.5, 11)$vbLabelText $csharpLabelTelerik 文档处理迁移核对表
迁移前任务
审核您的代码库,确定所有 Telerik 文档处理的使用情况:
grep -r "using Telerik.Windows.Documents" --include="*.cs" . grep -r "RadFlowDocument\|HtmlFormatProvider\|PdfFormatProvider" --include="*.cs" .grep -r "using Telerik.Windows.Documents" --include="*.cs" . grep -r "RadFlowDocument\|HtmlFormatProvider\|PdfFormatProvider" --include="*.cs" .SHELL记录现有的实现,包括使用的格式提供商、页眉/页脚配置、自定义页面设置以及对 Flow Document 模型的任何修改。
迁移过程中
1.删除 Telerik NuGet 软件包
- 安装IronPDF NuGet包
- 更新使用语句从
Telerik.Windows.Documents到IronPdf4.在启动时添加许可证密钥初始化 - 将
HtmlFormatProvider替换为ChromePdfRenderer - 删除
RadFlowDocument中间步骤 - 用直接
SaveAs()调用替换PdfFormatProvider导出 - 更新页眉/页脚以使用
HtmlHeaderFooter - 将页面设置转换为
RenderingOptions10.将边距单位从 DIP 更新为毫米
迁移后验证
迁移后,验证这些改进:
- CSS 的渲染效果应得到明显改善
- Bootstrap 布局应能正确呈现(在 Telerik 中无法呈现)
- Flexbox 和网格布局应能正常工作(在 Telerik 中不能正常工作)
- JavaScript 执行功能应适用于动态内容
- 大型文档生成应在无内存异常的情况下完成
迁移到IronPDF的主要优势
从Telerik 文档处理迁移到IronPDF可带来立竿见影的优势:
现代 Chromium 渲染引擎:IronPDF使用与 Google Chrome 相同的渲染引擎,确保 PDF 文件能够像在现代浏览器中一样准确地渲染。 这消除了 Telerik Flow 文档模型固有的 CSS 兼容性问题。
完整的 CSS3 和 JavaScript 支持: Flexbox、Grid、Bootstrap 5、CSS 变量和现代 JavaScript 全部正确工作,确保与现代网页标准的兼容性。
更简单的 API:更少的代码行数、没有中间文档模型以及直观的方法名称,可减少开发时间和维护负担。
独立许可:IronPDF提供简单的许可方式,无需购买完整的套件,为只需要 PDF 功能的团队提供了一种经济高效的解决方案。
积极开发:定期更新确保与当前和未来的 .NET 版本、安全补丁和功能增强兼容。
请注意Telerik是其各自所有者的注册商标。 本网站未与Progress Software有任何关联、认可或赞助。 所有产品名称、徽标和品牌均为各自所有者的财产。 比较仅供参考,反映撰写时公开可用的信息。

