Jak przejść z Telerik Document Processing na IronPDF w języku C#
Telerik Document Processing dostarczany jest jako część pakietów Telerik UI i DevCraft, oferując deweloperom możliwości generowania PDF obok przetwarzania Word, Excel i PowerPoint. Jednakże, gdy nowoczesne standardy webowe ewoluują i projekty wymagają pełnego wsparcia dla CSS3, Flexbox i Bootstrap, zespoły deweloperskie zgłaszają obawy dotyczące ograniczeń w architekturze renderowania HTML-to-PDF w Telerik.
Niniejszy przewodnik przedstawia kompletną ścieżkę migracji z Przetwarzanie dokumentów Telerik do IronPDF, zawierającą instrukcje krok po kroku, porównania kodu oraz praktyczne przykłady zaczerpnięte bezpośrednio z rzeczywistych scenariuszy migracji.
Dlaczego warto przejść z Telerik Document Processing
Decyzja o migracji z Przetwarzanie dokumentów Telerik wynika zazwyczaj z ograniczeń technicznych, które ujawniają się podczas pracy z nowoczesnymi treściami internetowymi. Zrozumienie tych ograniczeń pomaga uzasadnić wysiłek związany z migracją i określa oczekiwania co do tego, co rozwiązuje IronPDF.
Zgłoszone ograniczenia techniczne
Deweloperzy zgłosili problemy z Przetwarzanie dokumentów Telerik podczas obsługi nowoczesnego HTML i CSS:
| Problem | Wpływ | Rozwiązanie IronPDF |
|---|---|---|
| Ograniczenia parsowania CSS | Nowoczesne frameworki CSS, takie jak Bootstrap, zawodzą | Pełna obsługa CSS Chromium |
| Konwersja elementów div na akapity | Struktura HTML spłaszczona, układ stron zepsuty | Bezpośrednie renderowanie HTML |
| Model dokumentu Flow | Wymusza konwersję pośrednią | Natywny HTML do PDF |
| Problemy z zewnętrznymi plikami CSS | Zignorowano złożone selektory | Pełna obsługa plików CSS |
| Problemy z pamięcią | OutOfMemoryException zgłoszone przy dużych plikach |
Wydajne przesyłanie strumieniowe |
Główny problem: HTML nie jest renderowany poprawnie
Telerik Document Processing konwertuje HTML na pośredni model "Flow Document" przed wygenerowaniem pliku PDF. Ta decyzja architektoniczna powoduje szereg problemów:
- Spłaszcza strukturę HTML — elementy stają się akapitami
- Ignoruje nowoczesny CSS — układy Flexbox i Grid całkowicie zawodzą
- Nie działa z Bootstrapem — systemy kolumn nie wyświetlają się jako kolumny
- Utrata formatowania — złożone selektory CSS są ignorowane
Rozważmy ten nowoczesny kod HTML, który wykorzystuje standardowe układy CSS:
<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>HTMLW Przetwarzanie dokumentów Telerik wszystkie te układy są renderowane jako kolejne akapity. Dwukolumnowy układ Bootstrap zamienia się w dwa wiersze tekstu. Elementy flexboxu układają się pionowo. Elementy CSS Grid pojawiają się jeden po drugim.
Funkcje CSS, które nie działają w przetwarzaniu dokumentów Telerik
Programiści udokumentowali liczne problemy z kompatybilnością CSS:
/* ❌ These CSS features DON'T WORK in Przetwarzanie dokumentów Telerik */ /* Flexbox - Nieobsługiwane */ .container { display: flex; } .item { flex: 1; } /* CSS Grid - Nieobsługiwane */ .grid { display: grid; grid-template-columns: repeat(3, 1fr); } /* Bootstrap columns - Converted to paragraphs */ .col-md-6 { /* Ignored, becomes linear text */ } /* CSS Variables - Nieobsługiwane */ :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; }Raporty wydajności dla dużych dokumentów
Poza ograniczeniami CSS, programiści zgłosili błędy
OutOfMemoryExceptionpodczas przetwarzania dużych plików przy użyciu Telerik Document Processing, w związku z nieobsługiwanymi przestrzeniami kolorów i awariami podczas łączenia PDF w niektórych scenariuszach. Zespoły pracujące z generacją dokumentów na dużą skalę zauważyły problemy ze stabilnością, które warto ocenić przed zaangażowaniem się w długoterminowe użytkowanie.IronPDF a Telerik Document Processing: porównanie funkcji
Zrozumienie różnic w funkcjonalnościach pomaga decydentom technicznym w ocenie inwestycji związanej z migracją:
Funkcja Przetwarzanie dokumentów Telerik IronPDF Renderowanie HTML Przepływ Konwersja dokumentów Bezpośrednie renderowanie Chromium Obsługa CSS3 Ograniczone, wiele funkcji nie działa Pełny CSS3 Flexbox Nieobsługiwane Obsługiwane CSS Grid Nieobsługiwane Obsługiwane Bootstrap Uszkodzone (spłaszczenie div) Obsługiwane, w tym Bootstrap 5 Zewnętrzny CSS Częściowe Obsługiwane JavaScript Nieobsługiwane Pełne wsparcie Duże dokumenty Zgłoszone problemy z pamięcią Wydajne przesyłanie strumieniowe Złożoność API Złożone (dostawcy, modele) Prosty (jedna klasa) Model licencji Komercjalizacja, część DevCraft Prosta licencja samodzielna Szybki start z migracją: 5 minut do pierwszego pliku PDF
Migracja z Przetwarzanie dokumentów Telerik do IronPDF może rozpocząć się natychmiast. Oto najszybszy sposób na wygenerowanie pierwszego pliku PDF za pomocą IronPDF.
Krok 1: Zaktualizuj pakiety NuGet
Usuń wszystkie pakiety do przetwarzania dokumentów 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.FixedSHELLZainstaluj IronPDF:
# Install IronPDF dotnet add package IronPdf# Install IronPDF dotnet add package IronPdfSHELLKrok 2: Aktualizacja instrukcji using
Zastąp przestrzenie nazw Telerik przestrzenią nazw 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 $csharpLabelKrok 3: Dodaj klucz licencyjny
Zainicjuj licencję podczas uruchamiania aplikacji:
// 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 $csharpLabelKrok 4: Zaktualizuj kod generujący pliki PDF
Przejście z Przetwarzanie dokumentów Telerik na IronPDF znacznie upraszcza kod źródłowy.
Przed (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 $csharpLabelPo (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 $csharpLabelRóżnica jest od razu widoczna: 3 linijki kodu IronPDF zastępują ponad 15 linijek kodu Telerik Document Processing. Co ważniejsze, wersja IronPDF poprawnie renderuje nowoczesny CSS, z którym model Flow Document firmy Telerik nie może sobie poradzić.
Przykłady migracji kodu
Konwersja HTML do PDF
Jest to najczęstszy przypadek użycia generowania plików PDF. Różnice architektoniczne między Przetwarzanie dokumentów Telerik a IronPDF stają się jasne w tym porównaniu.
Podejście firmy Telerik do przetwarzania dokumentów:
// 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 $csharpLabelPodejście 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 $csharpLabelWersja Telerik wymaga tworzenia
HtmlFormatProvider, importowania doRadFlowDocument, tworzeniaPdfFormatProvideri ręcznego zarządzania strumieniami plików.ChromePdfRendererIronPDF zajmuje się całym procesem poprzez jedno wywołanie metody.W przypadku bardziej zaawansowanych scenariuszy konwersji HTML do PDF zapoznaj się z przewodnikiem po konwersji HTML do PDF.
Konwersja adresów URL do formatu PDF
Przechwytywanie stron internetowych jako plików PDF ujawnia kolejną istotną różnicę między bibliotekami.
Podejście firmy Telerik do przetwarzania dokumentów:
// 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 $csharpLabelPodejście 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 $csharpLabelTelerik Document Processing nie posiada natywnej funkcji konwersji adresów URL do formatu PDF. Należy ręcznie pobrać zawartość HTML za pomocą
HttpClient, tracąc zewnętrzny CSS, wykonanie JavaScript i dynamiczne treści w tym procesie. MetodaRenderUrlAsPdfIronPDF przechwytuje kompletną wyrenderowaną stronę dokładnie tak, jak wygląda w przeglądarce.Zapoznaj się z dokumentacją dotyczącą konwersji adresów URL do formatu PDF, aby poznać dodatkowe opcje, w tym uwierzytelnianie i niestandardowe nagłówki.
Łączenie wielu plików PDF
Łączenie plików PDF ilustruje różnicę w szczegółowości tych bibliotek .NET do obsługi plików PDF.
Podejście firmy Telerik do przetwarzania dokumentów:
// 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 $csharpLabelPodejście 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 $csharpLabelWersja Telerik wymaga importowania każdego dokumentu osobno, ręcznego przeglądania stron, dodawania ich do nowego dokumentu oraz zarządzania wieloma strumieniami plików. Metoda
PdfDocument.Merge()IronPDF obsługuje wszystko w jednym wywołaniu.Aby uzyskać informacje na temat zaawansowanych scenariuszy łączenia, w tym selektywnego wyodrębniania stron, zapoznaj się z przewodnikiem dotyczącym łączenia i dzielenia plików PDF.
Mapowanie API przetwarzania dokumentów Telerik do IronPDF
Ta tabela odniesień przyspiesza migrację, pokazując bezpośrednie odpowiedniki API:
Przetwarzanie dokumentów Telerik IronPDF HtmlFormatProviderChromePdfRendererRadFlowDocumentNie jest potrzebne PdfFormatProviderpdf.SaveAs()RadFlowDocumentEditorManipulacja HTML SectionHTML ParagraphHTML PdfExportSettingsRenderingOptionsRadFixedDocumentPdfDocumentIteracja strony podręcznika PdfDocument.Merge()Obsługa nagłówków i stopek
Telerik Document Processing wykorzystuje model programowy dla nagłówków i stopek.IronPDF udostępnia nagłówki oparte na HTML z dynamicznymi symbolami zastępczymi.
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");section.Headers.Default.Blocks.AddParagraph().Inlines.AddRun("Header Text") section.Footers.Default.Blocks.AddParagraph().Inlines.AddRun("Footer Text")$vbLabelText $csharpLabelIronPDF:
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 $csharpLabelPodejście oparte na HTML firmy IronPDF umożliwia pełne stosowanie stylów CSS w nagłówkach i stopkach, a także dynamiczne symbole zastępcze dla numerów stron i dat. Więcej informacji można znaleźć w dokumentacji dotyczącej nagłówków i stopek.
Przeliczanie jednostek: DIP na milimetry
Telerik Document Processing wykorzystuje do pomiarów piksele niezależne od urządzenia (DIP).IronPDF używa milimetrów. Wymaga to konwersji podczas migracji:
// 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);' 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 $csharpLabelLista kontrolna migracji przetwarzania dokumentów Telerik
Zadania przed migracją
Przeprowadź audyt kodu źródłowego, aby zidentyfikować wszystkie przypadki użycia 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" .SHELLNależy udokumentować istniejące implementacje, w tym używane dostawcy formatów, konfiguracje nagłówków/stopek, niestandardowe ustawienia stron oraz wszelkie modyfikacje modelu Flow Document.
Podczas migracji
- Usuń pakiety Telerik NuGet
- Zainstaluj pakiet NuGet IronPDF
- Zaktualizuj deklaracje using z
Telerik.Windows.DocumentsnaIronPdf - Dodaj inicjalizację klucza licencyjnego podczas uruchamiania
- Zastąp
HtmlFormatProviderprzezChromePdfRenderer - Usuń kroki pośrednie
RadFlowDocument - Zamień eksporty
PdfFormatProviderna bezpośrednie wywołaniaSaveAs() - Zaktualizuj nagłówki/stopki, aby używać
HtmlHeaderFooter - Przekształć ustawienia strony na
RenderingOptions - Zaktualizuj jednostki marginesów z DIP na milimetry
Weryfikacja po migracji
Po migracji sprawdź następujące ulepszenia:
- Renderowanie CSS powinno ulec znacznej poprawie
- Układy Bootstrap powinny wyświetlać się poprawnie (w Telerik tak nie jest)
- Układy Flexbox i Grid powinny działać (w Telerik nie działają)
- Wykonanie kodu JavaScript powinno działać w przypadku treści dynamicznych
- Generowanie dużych dokumentów powinno przebiegać bez wyjątków pamięci
Kluczowe korzyści z migracji do IronPDF
Przejście z Przetwarzanie dokumentów Telerik na IronPDF zapewnia natychmiastowe korzyści:
Nowoczesny silnik renderujący Chromium:IronPDF wykorzystuje ten sam silnik renderujący co przeglądarka Google Chrome, co gwarantuje, że pliki PDF są wyświetlane dokładnie tak, jak treść wygląda w nowoczesnych przeglądarkach. Eliminuje to problemy z kompatybilnością CSS związane z modelem dokumentu Flow firmy Telerik.
Pełne wsparcie dla CSS3 i JavaScript: Flexbox, Grid, Bootstrap 5, zmienne CSS i nowoczesny JavaScript działają poprawnie, zapewniając zgodność z nowoczesnymi standardami webowymi.
Prostsze API: Mniejsza liczba linii kodu, brak pośrednich modeli dokumentów oraz intuicyjne nazwy metod skracają czas programowania i zmniejszają obciążenie związane z utrzymaniem.
Licencjonowanie samodzielne:IronPDF oferuje proste licencjonowanie bez konieczności zakupu kompleksowej Suite, zapewniając ekonomiczne rozwiązanie dla zespołów, które potrzebują wyłącznie funkcji związanych z plikami PDF.
Aktywny rozwój: Regularne aktualizacje zapewniają zgodność z obecnymi i przyszłymi wersjami .NET, poprawkami bezpieczeństwa oraz ulepszeniami funkcji.
Zwróć uwagęTelerik to zarejestrowany znak towarowy jego właściciela. Ta strona nie jest powiązana z, popierana przez ani sponsorowana przez Progress Software. Wszystkie nazwy produktów, logo i marki są własnością ich odpowiednich właścicieli. Porównania mają charakter wyłącznie informacyjny i odzwierciedlają informacje dostępne publicznie w momencie pisania.

