Telerik Document Processing에서 IronPDF로의 마이그레이션 방법 (C#)
Telerik Document Processing는 DevCraft Suite의 일부로 .NET 생태계에서 제공되며, 개발자에게 PDF 생성 기능을 Word, Excel, PowerPoint 처리와 함께 제공합니다. 그러나 최신 웹 표준이 진화하고 프로젝트가 완전한 CSS3, Flexbox, Bootstrap 지원을 요구함에 따라, 많은 개발 팀이 Telerik의 HTML-to-PDF 렌더링 아키텍처에서 근본적인 한계를 발견하고 있습니다.
이 가이드는 실제 마이그레이션 시나리오에서 직접 가져온 단계별 지침, 코드 비교 및 실용적인 예제를 통해 Telerik Document Processing에서 IronPDF로 완전한 마이그레이션 경로를 제공합니다.
Telerik Document Processing에서 마이그레이션 해야 하는 이유
Telerik Document Processing에서 마이그레이션하기로 결정하는 것은 주로 현대 웹 콘텐츠를 다룰 때 나타나는 기술적 한계에서 비롯됩니다. 이러한 제한을 이해하면 마이그레이션 노력을 정당화하고 IronPDF가 해결하는 내용을 기대할 수 있도록 설정해 줍니다.
중요한 기술적 한계
Telerik Document Processing는 최신 HTML 및 CSS를 다룰 때 근본적인 문제가 있습니다:
| 문제 | 영향 | IronPDF 솔루션 |
|---|---|---|
| CSS 파싱 제한 | 부트스트랩(같은 현대 CSS 프레임워크)이 실패 | 전체 Chromium CSS 지원 |
| Div에서 단락으로 변환 | HTML 구조가 평면화되고 레이아웃이 깨짐 | 직접 HTML 렌더링 |
| Flow 문서 모델 | 중간 변환을 강제 | 네이티브 HTML에서 PDF |
| 외부 CSS 문제 | 복잡한 선택기가 무시됨 | 전체 CSS 파일 지원 |
| 메모리 문제 | 큰 문서에서 OutOfMemoryException 발생 | 효율적인 스트리밍 |
핵심 문제: HTML이 제대로 렌더되지 않음
Telerik Document Processing는 PDF를 생성하기 전에 HTML을 중간 '플로우 문서' 모델로 변환합니다. 이 아키텍처 결정은 연속적인 문제를 만듭니다:
- HTML 구조를 평면화 —
<div>요소가 단락이 됩니다 - 최신 CSS를 무시함 — Flexbox 및 Grid 레이아웃이 완전히 실패합니다
- Bootstrap가 깨짐 — 열 시스템이 열로 렌더링되지 않습니다
- 포맷을 잃어버림 — 복잡한 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 Document Processing에서는 이 모든 레이아웃이 연속적인 단락으로 렌더링됩니다. 두 열의 Bootstrap 레이아웃은 두 줄의 텍스트가 됩니다. flexbox 항목은 수직으로 쌓입니다. CSS Grid 항목은 하나씩 나타납니다.
Telerik Document Processing에서 실패하는 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 렌더링 | 흐름 문서 변환 | Direct Chromium rendering |
| CSS3 지원 | 제한됨, 많은 기능이 실패 | 전체 CSS3 |
| Flexbox | 지원되지 않음 | 지원됨 |
| CSS Grid | 지원되지 않음 | 지원됨 |
| Bootstrap | 망가짐 (div 평면화) | Bootstrap 5를 포함하여 지원됨 |
| 외부 CSS | 부분적 | 지원됨 |
| JavaScript | 지원되지 않음 | 완전한 ES2024 지원 |
| 대용량 문서 | 메모리 문제 | 효율적인 스트리밍 |
| API 복잡성 | 복합 (제공자, 모델) | 단순 (하나의 클래스) |
| 라이선스 모델 | 상업적, DevCraft의 일부 | 단순 독립형 라이선스 |
빠른 시작 마이그레이션: 첫 번째 PDF까지 5분
Telerik Document Processing에서 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: 사용 문장 업데이트
Telerik 네임스페이스를 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;
// 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 Document Processing에서 IronPDF로의 변환은 코드베이스를 극적으로 단순화합니다.
이전 (Telerik Document Processing):
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)
이후 (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")
차이는 즉시 눈에 띕니다: IronPDF의 3줄 코드는Telerik 문서 처리코드의 15줄 이상을 대체합니다. 더 중요한 것은IronPDF버전이 Telerik의 플로우 문서 모델이 처리할 수 없는 최신 CSS를 올바르게 렌더링할 것이라는 점입니다.
코드 마이그레이션 예제
HTML을 PDF로 변환
이것은 PDF 생성에 가장 흔한 사용 사례입니다. Telerik Document Processing과 IronPDF의 아키텍처 차이는 이 비교에서 분명해집니다.
Telerik Document Processing 접근법:
// 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-to-PDF 시나리오에 대한 자세한 사항은 HTML to PDF 변환 가이드를 참조하세요.
URL을 PDF로 변환
웹 페이지를 PDF로 캡처하는 것은 라이브러리 간의 또 다른 중요한 차이점을 드러냅니다.
Telerik Document Processing 접근법:
// 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을 PDF로 변환하는 기본적인 기능이 없습니다. HTML 콘텐츠를 HttpClient 을 사용하여 수동으로 가져와야 하며, 이 과정에서 외부 CSS, JavaScript 실행, 동적 콘텐츠를 잃게 됩니다. IronPDF의 RenderUrlAsPdf 메소드는 브라우저에서 보이는 것과 동일하게 렌더링된 페이지 전체를 캡처합니다.
URL에서 PDF로 변환 문서에서 인증 및 사용자 지정 헤더를 포함한 추가 옵션을 탐색하십시오.
여러 PDF 병합
PDF 병합은 이러한 .NET PDF 라이브러리 간의 상세 차이를 보여줍니다.
Telerik Document Processing 접근법:
// 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 Document Processing은 헤더와 푸터에 대해 프로그래머적인 모델을 사용합니다. 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 스타일링을 허용하며, 페이지 번호와 날짜를 위한 동적 자리 표시자를 제공합니다. 더 많은 정보는 헤더 및 푸터 문서에서 알아보십시오.
단위 변환: DIPs에서 밀리미터로
Telerik Document Processing은 측정에 장치 독립적 픽셀(DIPs)을 사용합니다. 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 Document Processing 사용을 식별하기 위해 코드베이스를 감사하십시오:
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 모델 수정사항을 포함한 기존 구현을 문서화하십시오.
마이그레이션 중
- Telerik NuGet 패키지 제거
- IronPdf NuGet 패키지를 설치하세요
Telerik.Windows.Documents에서IronPdf로 using 문 업데이트- 시작 시 라이선스 키 초기화 추가
HtmlFormatProvider를ChromePdfRenderer로 교체RadFlowDocument중간 단계를 제거합니다PdfFormatProvider내보내기를 직접SaveAs()호출로 교체- 머리글/바닥글을
HtmlHeaderFooter를 사용하여 업데이트 - 페이지 설정을
RenderingOptions로 변환 - 여백 단위를 DIPs에서 밀리미터로 업데이트
마이그레이션 후 검증
마이그레이션 후, 다음 개선 사항을 검증하십시오:
- CSS 렌더링이 크게 향상되어야 합니다
- Bootstrap 레이아웃이 올바르게 렌더링되어야 합니다 (Telerik에서는 그렇지 않습니다)
- Flexbox 및 Grid 레이아웃이 작동해야 합니다 (Telerik에서는 그렇지 않습니다)
- 동적 콘텐츠에 대해 JavaScript 실행이 작동해야 합니다
- 대량 문서 생성이 메모리 예외 없이 완료되어야 합니다
IronPDF로 마이그레이션할 때의 주요 이점
Telerik Document Processing에서 IronPDF로 이동하면 즉각적인 장점을 제공합니다:
현대적인 Chromium 렌더링 엔진: IronPDF는 Google Chrome과 같은 렌더링 엔진을 사용하여 PDF가 현대 브라우저에서 콘텐츠가 나타나는 대로 정확하게 렌더링됩니다. 이는 Telerik의 Flow Document 모델에 내재된 CSS 호환성 문제를 제거합니다.
전체 CSS3 및 JavaScript 지원: Flexbox, Grid, Bootstrap 5, CSS 변수 및 현대적인 JavaScript 모두가 정확하게 작동합니다. .NET 10 및 C# 14의 채택이 2026년까지 증가함에 따라 IronPDF의 현대적인 렌더링은 현대적인 웹 표준과의 호환성을 보장합니다.
더 간단한 API: 코드 줄이 적고, 중간 문서 모델이 없으며, 직관적인 메서드 이름을 사용하여 개발 시간과 유지보수 부담을 줄입니다.
독립형 라이선싱: IronPDF는 전체 제품군 구매가 필요 없는 간단한 라이선스를 제공하여 PDF 기능만 필요한 팀에게 비용 효율적인 솔루션을 제공합니다.
활발한 개발: 정기적인 업데이트로 현재 및 미래의 .NET 버전과의 호환성, 보안 패치 및 기능 향상을 보장합니다.

