跳至页脚内容
迁移指南

如何用 C# 从 Telerik Document Processing 迁移到 IronPDF

作为 DevCraft 套件的一部分,Telerik Document Processing 为 .NET 生态系统提供服务,在处理 Word、Excel 和 PowerPoint 的同时,还为开发人员提供 PDF 生成功能。 然而,随着现代 Web 标准的发展和项目对全面 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 转换为中间的 "流程文档 "模型。 这一架构决策会产生一系列问题:

1.扁平化 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 错误。 从事大量文档生成工作的开发团队遇到了稳定性问题,而其他库可以更高效地处理这些问题。

IronPDF与 Telerik 文档处理:功能比较

了解功能差异有助于技术决策者评估迁移投资:

特征 Telerik 文档处理 IronPDF
HTML 渲染 流程文档转换 直接 Chromium 渲染
CSS3 支持 内容有限,许多功能无法实现 完整的 CSS3
Flexbox 不支持 支持
CSS 网格 不支持 支持
脚本 破损(div 扁平化) 支持 Bootstrap 5
外部 CSS 部分翻译 支持
JavaScript语言 不支持 完全支持 ES2024
大型文档 内存问题 高效流
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.Fixed
SHELL

安装 IronPDF:

# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
SHELL

步骤 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   $csharpLabel

After (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   $csharpLabel

IronPDF 方法:

// 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   $csharpLabel

Telerik 版本需要创建 HtmlFormatProvider,导入到 RadFlowDocument,创建 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   $csharpLabel

IronPDF 方法:

// 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   $csharpLabel

Telerik 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   $csharpLabel

IronPDF 方法:

// 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   $csharpLabel

Telerik 版本需要分别导入每个文档,手动迭代页面,将它们添加到新文档中,并管理多个文件流。IronPDF的 PdfDocument.Merge() 方法在一次调用中处理所有操作。

有关包括选择性页面提取在内的高级合并方案,请参阅 合并和拆分 PDF 指南

Telerik 文档处理 API 到IronPDF的映射

本参考表通过显示直接的 API 对应关系来加快迁移速度:

Telerik 文档处理 IronPDF
HtmlFormatProvider ChromePdfRenderer
RadFlowDocument 不需要
PdfFormatProvider pdf.SaveAs()
RadFlowDocumentEditor HTML 操作
Section HTML <section>
Paragraph HTML <p>
PdfExportSettings RenderingOptions
RadFixedDocument PdfDocument
手动页面迭代 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   $csharpLabel

IronPDF:

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   $csharpLabel

IronPDF 基于 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   $csharpLabel

Telerik 文档处理迁移核对表

迁移前任务

审核您的代码库,确定所有 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 软件包 2.安装IronPDFNuGet 软件包

  1. 使用语句从 Telerik.Windows.Documents 更新到 IronPdf 4.在启动时添加许可证密钥初始化
  2. HtmlFormatProvider 替换为 ChromePdfRenderer
  3. 删除 RadFlowDocument 中间步骤
  4. PdfFormatProvider 导出替换为直接调用 SaveAs() 调用
  5. 更新页眉/页脚以使用 HtmlHeaderFooter
  6. 将页面设置转换为 RenderingOptions 10.将边距单位从 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 均可正常工作。 随着 .NET 10 和 C# 14 的采用率在 2026 年之前不断提高,IronPDF 的现代渲染确保了与当代网络标准的兼容性。

更简单的 API:更少的代码行数、没有中间文档模型以及直观的方法名称,可减少开发时间和维护负担。

独立许可:IronPDF提供简单的许可方式,无需购买完整的套件,为只需要 PDF 功能的团队提供了一种经济高效的解决方案。

积极开发:定期更新确保与当前和未来的 .NET 版本、安全补丁和功能增强兼容。

Curtis Chau
技术作家

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

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

钢铁支援团队

我们每周 5 天,每天 24 小时在线。
聊天
电子邮件
打电话给我