MIGRATION GUIDES How to Migrate from Telerik Document Processing to IronPDF in C# 커티스 차우 게시됨:2월 1, 2026 다운로드 IronPDF NuGet 다운로드 DLL 다운로드 윈도우 설치 프로그램 무료 체험 시작하기 LLM용 사본 LLM용 사본 LLM용 마크다운 형식으로 페이지를 복사하세요 ChatGPT에서 열기 ChatGPT에 이 페이지에 대해 문의하세요 제미니에서 열기 제미니에게 이 페이지에 대해 문의하세요 Grok에서 열기 Grok에게 이 페이지에 대해 문의하세요 혼란 속에서 열기 Perplexity에게 이 페이지에 대해 문의하세요 공유하다 페이스북에 공유하기 트위터에 공유하기 LinkedIn에 공유하기 URL 복사 이메일로 기사 보내기 Telerik Document Processing has served the .NET ecosystem as part of the DevCraft suite, offering developers PDF generation capabilities alongside Word, Excel, and PowerPoint processing. However, as modern web standards evolve and projects demand full CSS3, Flexbox, and Bootstrap support, many development teams are discovering fundamental limitations in Telerik's HTML-to-PDF rendering architecture. This guide provides a complete migration path from Telerik Document Processing to IronPDF, with step-by-step instructions, code comparisons, and practical examples drawn directly from real migration scenarios. Why Migrate from Telerik Document Processing The decision to migrate from Telerik Document Processing typically stems from technical limitations that become apparent when working with modern web content. Understanding these limitations helps justify the migration effort and sets expectations for what IronPDF resolves. Critical Technical Limitations Telerik Document Processing has fundamental issues when handling modern HTML and CSS: Issue Impact IronPDF Solution CSS parsing limitations Modern CSS frameworks like Bootstrap fail Full Chromium CSS support Div-to-paragraph conversion HTML structure flattened, layouts break Direct HTML rendering Flow document model Forces intermediate conversion Native HTML-to-PDF External CSS issues Complex selectors ignored Full CSS file support Memory issues OutOfMemoryException on large docs Efficient streaming The Core Problem: HTML Is Not Rendered Correctly Telerik Document Processing converts HTML to an intermediate "Flow Document" model before generating PDF. This architectural decision creates cascading problems: Flattens HTML structure — <div> elements become paragraphs Ignores modern CSS — Flexbox and Grid layouts fail completely Breaks Bootstrap — Column systems don't render as columns Loses formatting — Complex CSS selectors are ignored Consider this modern HTML that uses standard CSS layouts: <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 In Telerik Document Processing, all of these layouts render as sequential paragraphs. The two-column Bootstrap layout becomes two lines of text. The flexbox items stack vertically. The CSS Grid items appear one after another. CSS Features That Fail in Telerik Document Processing Developers have documented extensive CSS compatibility issues: /* ❌ These CSS features DON'T WORK in Telerik Document Processing */ /* Flexbox - Not supported */ .container { display: flex; } .item { flex: 1; } /* CSS Grid - Not supported */ .grid { display: grid; grid-template-columns: repeat(3, 1fr); } /* Bootstrap columns - Converted to paragraphs */ .col-md-6 { /* Ignored, becomes linear text */ } /* CSS Variables - Not supported */ :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; } Performance Issues with Large Documents Beyond CSS limitations, Telerik Document Processing has documented OutOfMemoryException errors when processing large files. Development teams working with high-volume document generation have encountered stability issues that other libraries handle more efficiently. IronPDF vs Telerik Document Processing: Feature Comparison Understanding the feature differences helps technical decision-makers evaluate the migration investment: Feature Telerik Document Processing IronPDF HTML Rendering Flow Document conversion Direct Chromium rendering CSS3 Support Limited, many features fail Full CSS3 Flexbox Not supported Supported CSS Grid Not supported Supported Bootstrap Broken (div flattening) Supported including Bootstrap 5 External CSS Partial Supported JavaScript Not supported Full ES2024 support Large Documents Memory issues Efficient streaming API Complexity Complex (providers, models) Simple (one class) License Model Commercial, part of DevCraft Simple standalone licensing Quick Start Migration: 5 Minutes to Your First PDF The migration from Telerik Document Processing to IronPDF can begin immediately. Here's the fastest path to generating your first PDF with IronPDF. Step 1: Update NuGet Packages Remove all Telerik document processing packages: # 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 Install IronPDF: # Install IronPDF dotnet add package IronPdf # Install IronPDF dotnet add package IronPdf SHELL Step 2: Update Using Statements Replace Telerik namespaces with the IronPdf namespace: // 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; $vbLabelText $csharpLabel Step 3: Add License Key Initialize your license at application startup: // Add at application startup IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; // Add at application startup IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; $vbLabelText $csharpLabel Step 4: Update Your PDF Generation Code The transformation from Telerik Document Processing to IronPDF dramatically simplifies your codebase. Before (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); $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"); $vbLabelText $csharpLabel The difference is immediately apparent: 3 lines of IronPDF code replace 15+ lines of Telerik Document Processing code. More importantly, the IronPDF version will correctly render modern CSS that Telerik's Flow Document model cannot handle. Code Migration Examples Converting HTML to PDF This is the most common use case for PDF generation. The architectural differences between Telerik Document Processing and IronPDF become clear in this comparison. Telerik Document Processing Approach: // 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); } $vbLabelText $csharpLabel IronPDF Approach: // 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"); $vbLabelText $csharpLabel The Telerik version requires creating an HtmlFormatProvider, importing to a RadFlowDocument, creating a PdfFormatProvider, and managing file streams manually. IronPDF's ChromePdfRenderer handles the entire process with a single method call. For more advanced HTML-to-PDF scenarios, see the HTML to PDF conversion guide. Converting URLs to PDF Capturing web pages as PDFs reveals another significant difference between the libraries. Telerik Document Processing Approach: // 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); } $vbLabelText $csharpLabel IronPDF Approach: // 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"); $vbLabelText $csharpLabel Telerik Document Processing has no native URL-to-PDF capability. You must manually fetch HTML content using HttpClient, losing external CSS, JavaScript execution, and dynamic content in the process. IronPDF's RenderUrlAsPdf method captures the complete rendered page exactly as it appears in a browser. Explore the URL to PDF documentation for additional options including authentication and custom headers. Merging Multiple PDFs PDF merging demonstrates the verbosity difference between these .NET PDF libraries. Telerik Document Processing Approach: // 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); } $vbLabelText $csharpLabel IronPDF Approach: // 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"); $vbLabelText $csharpLabel The Telerik version requires importing each document separately, manually iterating through pages, adding them to a new document, and managing multiple file streams. IronPDF's PdfDocument.Merge() method handles everything in a single call. For advanced merging scenarios including selective page extraction, see the merge and split PDFs guide. Telerik Document Processing API to IronPDF Mapping This reference table accelerates migration by showing direct API equivalents: Telerik Document Processing IronPDF HtmlFormatProvider ChromePdfRenderer RadFlowDocument Not needed PdfFormatProvider pdf.SaveAs() RadFlowDocumentEditor HTML manipulation Section HTML <section> Paragraph HTML <p> PdfExportSettings RenderingOptions RadFixedDocument PdfDocument Manual page iteration PdfDocument.Merge() Handling Headers and Footers Telerik Document Processing uses a programmatic model for headers and footers. IronPDF provides HTML-based headers with dynamic placeholders. Telerik Document Processing: 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 }; $vbLabelText $csharpLabel IronPDF's HTML-based approach allows full CSS styling in headers and footers, plus dynamic placeholders for page numbers and dates. Learn more in the headers and footers documentation. Unit Conversion: DIPs to Millimeters Telerik Document Processing uses device-independent pixels (DIPs) for measurements. IronPDF uses millimeters. This requires conversion during migration: // 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 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 Document Processing Migration Checklist Pre-Migration Tasks Audit your codebase to identify all Telerik Document Processing usage: 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 Document existing implementations including format providers used, header/footer configurations, custom page settings, and any Flow Document model modifications. During Migration Remove Telerik NuGet packages Install IronPdf NuGet package Update using statements from Telerik.Windows.Documents to IronPdf Add license key initialization at startup Replace HtmlFormatProvider with ChromePdfRenderer Remove RadFlowDocument intermediate steps Replace PdfFormatProvider exports with direct SaveAs() calls Update headers/footers to use HtmlHeaderFooter Convert page settings to RenderingOptions Update margin units from DIPs to millimeters Post-Migration Verification After migration, verify these improvements: CSS rendering should improve significantly Bootstrap layouts should render correctly (they don't in Telerik) Flexbox and Grid layouts should work (they don't in Telerik) JavaScript execution should function for dynamic content Large document generation should complete without memory exceptions Key Benefits of Migrating to IronPDF Moving from Telerik Document Processing to IronPDF provides immediate advantages: Modern Chromium Rendering Engine: IronPDF uses the same rendering engine as Google Chrome, ensuring PDFs render exactly as content appears in modern browsers. This eliminates the CSS compatibility issues inherent in Telerik's Flow Document model. Full CSS3 and JavaScript Support: Flexbox, Grid, Bootstrap 5, CSS variables, and modern JavaScript all work correctly. As .NET 10 and C# 14 adoption increases through 2026, IronPDF's modern rendering ensures compatibility with contemporary web standards. Simpler API: Fewer lines of code, no intermediate document models, and intuitive method names reduce development time and maintenance burden. Standalone Licensing: IronPDF offers straightforward licensing without requiring a comprehensive suite purchase, providing a cost-effective solution for teams that only need PDF capabilities. Active Development: Regular updates ensure compatibility with current and future .NET versions, security patches, and feature enhancements. 커티스 차우 지금 바로 엔지니어링 팀과 채팅하세요 기술 문서 작성자 커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다. 커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다. 관련 기사 게시됨 2월 1, 2026 How to Migrate from ZetPDF to IronPDF in C# Master the migration from ZetPDF to IronPDF with this complete C# guide. Switch from a coordinate-based library to a modern HTML-to-PDF solution. Includes code examples for HTML conversion, merging PDFs, and removing PDFSharp dependencies. 더 읽어보기 게시됨 2월 1, 2026 How to Migrate from Scryber.Core to IronPDF in C# Master the migration from Scryber.Core to IronPDF with this complete C# guide. Switch from custom XML/HTML parsing to a modern Chromium renderer. Includes code examples for HTML conversion, URL rendering, and replacing proprietary bindings. 더 읽어보기 게시됨 2월 1, 2026 How to Migrate from XFINIUM.PDF to IronPDF in C# Master the migration from XFINIUM.PDF to IronPDF with this complete C# guide. Switch from manual coordinate-based positioning to declarative HTML/CSS rendering. Includes code examples for replacing graphics primitives and automatic layout. 더 읽어보기 How to Migrate from Telerik Reporting to IronPDF in C#How to Migrate from TallComponents ...
게시됨 2월 1, 2026 How to Migrate from ZetPDF to IronPDF in C# Master the migration from ZetPDF to IronPDF with this complete C# guide. Switch from a coordinate-based library to a modern HTML-to-PDF solution. Includes code examples for HTML conversion, merging PDFs, and removing PDFSharp dependencies. 더 읽어보기
게시됨 2월 1, 2026 How to Migrate from Scryber.Core to IronPDF in C# Master the migration from Scryber.Core to IronPDF with this complete C# guide. Switch from custom XML/HTML parsing to a modern Chromium renderer. Includes code examples for HTML conversion, URL rendering, and replacing proprietary bindings. 더 읽어보기
게시됨 2월 1, 2026 How to Migrate from XFINIUM.PDF to IronPDF in C# Master the migration from XFINIUM.PDF to IronPDF with this complete C# guide. Switch from manual coordinate-based positioning to declarative HTML/CSS rendering. Includes code examples for replacing graphics primitives and automatic layout. 더 읽어보기