푸터 콘텐츠로 바로가기
마이그레이션 가이드

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을 중간 '플로우 문서' 모델로 변환합니다. 이 아키텍처 결정은 연속적인 문제를 만듭니다:

  1. HTML 구조를 평면화<div> 요소가 단락이 됩니다
  2. 최신 CSS를 무시함 — Flexbox 및 Grid 레이아웃이 완전히 실패합니다
  3. 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 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
SHELL

IronPDF 설치하세요:

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

단계 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
$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 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)
$vbLabelText   $csharpLabel

이후 (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

차이는 즉시 눈에 띕니다: 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
$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-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
$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로 변환하는 기본적인 기능이 없습니다. 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
$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 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")
$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 스타일링을 허용하며, 페이지 번호와 날짜를 위한 동적 자리 표시자를 제공합니다. 더 많은 정보는 헤더 및 푸터 문서에서 알아보십시오.

단위 변환: 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)
$vbLabelText   $csharpLabel

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" .
SHELL

사용된 형식 제공자, 헤더/푸터 구성, 사용자 정의 페이지 설정, 그리고 Flow Document 모델 수정사항을 포함한 기존 구현을 문서화하십시오.

마이그레이션 중

  1. Telerik NuGet 패키지 제거
  2. IronPdf NuGet 패키지를 설치하세요
  3. Telerik.Windows.Documents 에서 IronPdf 로 using 문 업데이트
  4. 시작 시 라이선스 키 초기화 추가
  5. HtmlFormatProviderChromePdfRenderer 로 교체
  6. RadFlowDocument 중간 단계를 제거합니다
  7. PdfFormatProvider 내보내기를 직접 SaveAs() 호출로 교체
  8. 머리글/바닥글을 HtmlHeaderFooter 를 사용하여 업데이트
  9. 페이지 설정을 RenderingOptions 로 변환
  10. 여백 단위를 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 버전과의 호환성, 보안 패치 및 기능 향상을 보장합니다.

커티스 차우
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해