如何在 C# 中從 Telerik Document Processing 遷移到 IronPDF
Telerik Document Processing 作為 DevCraft 套件的一部分,為 .NET 生態系統提供服務,除了 Word、Excel 和 PowerPoint 處理之外,還為開發人員提供 PDF 生成功能。 然而,隨著現代網頁標準的演進,以及專案需要完整的 CSS3、Flexbox 和 Bootstrap 支援,許多開發團隊發現 Telerik 的 HTML-to-PDF 渲染架構存在基本限制。
本指南提供了從Telerik 文件處理到IronPDF的完整遷移路徑,包括逐步說明、程式碼比較,以及直接取自真實遷移情境的實用範例。
為何要從 Telerik 文件處理轉移過來?
從Telerik 文件處理遷移的決定通常來自於在處理現代網頁內容時所顯現的技術限制。 瞭解這些限制有助於證明轉移工作的合理性,並為IronPDF所解決的問題設定期望值。
關鍵技術限制
Telerik Document Processing 在處理現代 HTML 和 CSS 時有一些基本問題:
| 問題 | 影響力 | IronPDF 解決方案 |
|---|---|---|
| CSS 解析限制 | 現代 CSS 框架(如 Bootstrap)失效 | 完整的 Chromium CSS 支援 |
| 分段轉換 | HTML 結構扁平化,佈局破裂 | 直接 HTML 渲染 |
| 流程文件模型 | 強制中間轉換 | 原生 HTML 至 PDF |
| 外部 CSS 問題 | 忽略複雜的選擇器 | 完整的 CSS 檔案支援 |
| 記憶體問題 | 大型文件上的 OutOfMemoryException | 高效率的串流 |
核心問題:HTML 未正確渲染
Telerik Document Processing 在產生 PDF 之前會將 HTML 轉換為中間的"Flow Document"模型。 此架構決定會產生連鎖問題:
1.扁平化 HTML 結構-元素變成段落 2.忽略現代 CSS - Flexbox 和 Grid 佈局完全失敗 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>
在Telerik 文件處理中,所有這些版面都會呈現為連續的段落。兩欄式的 Bootstrap 排版會變成兩行文字。 flexbox 項目垂直堆疊。 CSS Grid 項目一個接一個地出現。
在 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 錯誤。 開發團隊在處理大量文件產生時,會遇到其他程式庫能更有效率處理的穩定性問題。
IronPDFvs Telerik Document Processing:功能比較
瞭解功能差異有助於技術決策者評估遷移投資:
| 特點 | Telerik 文件處理 | IronPDF |
|---|---|---|
| HTML 渲染 | 流程文件轉換 | 直接 Chromium 渲染 |
| CSS3 支援。 | 功能有限,許多功能失敗 | 完整的 CSS3 |
| <強>Flexbox</強 | 不支援 | 支援 |
| CSS 網格 | 不支援 | 支援 |
| Bootstrap | 破損(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
安裝 IronPDF:
# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
步驟 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
步驟 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"
步驟 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)
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")
差異立即顯現: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
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")
Telerik 版本需要建立 HtmlFormatProvider,匯入 RadFlowDocument,建立 PdfFormatProvider,並手動管理檔案流。IronPDF的 ChromePdfRenderer 透過一次方法呼叫即可處理整個過程。
如需更進階的 HTML 至IronPDF方案,請參閱 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
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")
Telerik Document Processing 沒有原生 URL-to-PDF 功能。 您必須使用 HttpClient 手動取得 HTML 內容,過程中會遺失外部 CSS、JavaScript 執行和動態內容。IronPDF的 RenderUrlAsPdf 方法可以完全捕捉瀏覽器中顯示的完整渲染頁面。
探索 URL 至 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
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")
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")
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
}
IronPDF 基於 HTML 的方法允許在頁首和頁尾使用完整的 CSS 設定,Plus 動態頁碼和日期占位符。 在 headers and footers 文件中瞭解更多資訊。
單位轉換: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)
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" .
記錄現有的實作,包括使用的格式提供者、頁首/頁尾設定、自訂頁面設定,以及任何 Flow Document 模型修改。
遷移期間
1.移除 Telerik NuGet 套件 2.安裝IronPDFNuGet 套件
- 使用語句從
Telerik.Windows.Documents更新至IronPdf4.在啟動時加入授權金鑰初始化 - 將
HtmlFormatProvider替換為ChromePdfRenderer - 刪除
RadFlowDocument中間步驟 - 將
PdfFormatProvider匯出替換為直接調用SaveAs()調用 - 更新頁首/頁腳,使用
HtmlHeaderFooter - 將頁面設定轉換為
RenderingOptions10.將邊界單位從 DIP 更新為毫米
後遷移驗證
轉移後,驗證這些改進:
- CSS 渲染應大幅改善
- Bootstrap 佈局應正確呈現 (在 Telerik 中不會)
- Flexbox 與 Grid 佈局應該可以運作 (在 Telerik 中無法運作)
- JavaScript 執行功能應適用於動態內容
- 大型文件生成應在無記憶體異常的情況下完成
遷移到IronPDF的主要優點。
從Telerik 文件處理轉移到IronPDF可立即提供優勢:
現代 Chromium 渲染引擎:IronPDF使用與 Google Chrome 相同的渲染引擎,確保 PDF 檔案能夠像在現代瀏覽器中一樣準確地渲染。 這可以消除 Telerik 的流程文件模型固有的 CSS 相容性問題。
完全支援 CSS3 和 JavaScript: Flexbox、Grid、Bootstrap 5、CSS 變數和現代 JavaScript 均可正常運作。IronPDFfor .NET 10 和 C# 14 在 2026 年之前的採用率將會增加,IronPDF 的現代化渲染可確保與當代網路標準相容。
更簡單的 API:更少的程式碼行數、沒有中間文件模型以及直覺的方法名稱,可減少開發時間和維護負擔。
獨立許可:IronPDF提供簡單的許可方式,無需購買完整的套件,為只需要 PDF 功能的團隊提供了經濟高效的解決方案。
積極開發:定期更新確保與目前和未來的 .NET 版本、安全性修補程式和功能增強功能相容。

