Przejdź do treści stopki
PRZEWODNIKI MIGRACJI

Jak przejść z Telerik Reporting na IronPDF w języku C#

Telerik Reporting to potężna platforma do raportowania dla Enterprise, która doskonale służy programistom .NET do tworzenia interaktywnych raportów z wykorzystaniem wizualnych projektantów i funkcji drążenia danych. Jednak dla zespołów, których głównym zapotrzebowaniem jest generowanie plików PDF, a nie kompleksowa infrastruktura raportowania,Telerik Reportingczęsto wiąże się ze znacznymi kosztami licencyjnymi, złożonością wdrożenia i dużym obciążeniem środowiska uruchomieniowego.

Niniejszy przewodnik zawiera kompletną ścieżkę migracji zTelerik Reportingdo IronPDF, wraz z instrukcjami krok po kroku, porównaniami kodu i praktycznymi przykładami dla profesjonalnych programistów .NET rozważających tę zmianę.

Dlaczego warto przejść z Telerik Reporting

Decyzja o migracji zTelerik Reportingzazwyczaj opiera się na dopasowaniu narzędzi do rzeczywistych wymagań. Główne powody, dla których zespoły programistów rozważają migrację, to:

Licencjonowanie per deweloper: Samodzielne raportowanie Telerik zaczyna się od ~$685 za dewelopera, a szerszy pakiet DevCraft Complete zaczyna się od ~$1,763 (Q1 2026, ComponentSource). Oba sprzedawane są jako licencje wieczyste + 1 rok utrzymania lub jako roczna subskrypcja. Dla zespołów, które potrzebują jedynie generowania plików PDF, oznacza to znaczny niewykorzystany potencjał.

Zależność Projektanta Raportów:Telerik Reportingwymaga samodzielnego, webowego lub zintegrowanego z Visual Studio projektanta plus zestawu uruchomieniowego pobranego z prywatnego źródła NuGet firmy Telerik (https://nuget.telerik.com/v3/index.json, wymagany klucz licencyjny). Zwiększa to złożoność środowisk programistycznych i procesów CI/CD.

Złożona infrastruktura: Dla scenariuszy przeglądarek HTML5 należy hostować usługę Reporting REST (Telerik.Reporting.Services.AspNetCore) z konfiguracją skryptów przechowywania, rozwiązywania i widoku — infrastruktura, która zwiększa nakład pracy przy prostych zadaniach generowania plików PDF.

Format własnościowy: Definicje raportów XML .trdp i .trdx (własny format firmy Telerik — nie RDL/RDLC, który jest wyraźnie nieobsługiwany) zamykają użytkownika w ekosystemie Telerik. Migracja lub modyfikacja szablonów wymaga narzędzi Telerik.

Ciężki czas uruchomienia: Duża stopa wdrożenia dla tego, co może być prostą konwersją HTML-to-PDF, plus opcjonalne biblioteki DLL do renderowania dla DOCX/XLSX/PPTX/XPS.

Odnawialne utrzymanie: Nawet na licencji wieczystej, bieżące aktualizacje, poprawki i wsparcie wymagają odnowienia subskrypcji serwisowej.

KiedyTelerik Reportingto przesada

Jeśli używaszTelerik Reportinggłównie do generowania plików PDF na podstawie danych, prawdopodobnie płacisz za funkcje, z których nie korzystasz:

Potrzebujesz Telerik zapewnia (nieużywane)
PDF z HTML Projektant wizualny, drążenie danych
Proste raporty Interaktywna przeglądarka, eksport
Pliki PDF po stronie serwera Kontrolki pulpitu, silnik wykresów

IronPDF zapewnia ukierunkowane generowanie plików PDF bez obciążenia związanego z raportowaniem w Enterprise.

IronPDF a Telerik Reporting: porównanie funkcji

Zrozumienie różnic architektonicznych pomaga decydentom technicznym w ocenie inwestycji w migrację:

Funkcja Telerik Reporting IronPDF
Skup się na Tworzenie raportów z opcją eksportu do formatu PDF Kompleksowe generowanie plików PDF z HTML
Integracja Płynna integracja z aplikacjami .NET Core Możliwość integracji z dowolną aplikacją .NET
Złożoność konfiguracji Wymaga instalacji projektanta raportów Prosta instalacja NuGet
Ceny Część Suite komercyjnej DevCraft Oddzielna licencja, bardziej opłacalna w przypadku samodzielnego generowania plików PDF
Generowanie plików PDF Ograniczone do eksportu raportów Pełna funkcjonalność z zaawansowaną obsługą plików PDF
Grupa docelowa Programiści potrzebujący rozwiązań zorientowanych na raporty Programiści potrzebujący elastycznych rozwiązań do generowania plików PDF
Format szablonu .trdp / .trdx (XML; nie RDL/RDLC) HTML/CSS/Razor
Krzywa uczenia się Specyficzne dla Telerik (język wyrażeń, sekcje) Standardowe technologie internetowe
HTML do PDF Po stronie serwera przez HtmlTextBox (ograniczony HTML/CSS) Pełne renderowanie Chromium
URL do pliku PDF Nie wbudowane (pobierz samodzielnie HTML) Tak
Obsługa CSS Ograniczone (selektory podobne do CSS w projektancie) Pełny CSS3
JavaScript w czasie renderowania Nie (silnik serwera nie wykonuje JS) Pełna wersja ES2024
Podpisy cyfrowe Tak (X.509 / .PFX przez info o urzadzeniu PDF) Tak
PDF/A PDF/A-1b, PDF/A-2b, PDF/A-3b PDF/A-3
Rozmiar w czasie wykonywania Duży (silnik + DLL-e renderujące na format) Mniejsze

Szybki start: Migracja zTelerik Reportingdo IronPDF

Migrację można rozpocząć natychmiast, wykonując te podstawowe kroki.

Krok 1: Zastąp pakiety NuGet

Usuń wszystkie pakiety Telerik Reporting:

# RemoveTelerik Reportingpackages (hosted on the private Telerik NuGet feed)
dotnet remove package Telerik.Reporting
dotnet remove package Telerik.Reporting.Services.AspNetCore
dotnet remove package Telerik.ReportViewer.Mvc
# RemoveTelerik Reportingpackages (hosted on the private Telerik NuGet feed)
dotnet remove package Telerik.Reporting
dotnet remove package Telerik.Reporting.Services.AspNetCore
dotnet remove package Telerik.ReportViewer.Mvc
SHELL

Zainstaluj IronPDF:

# Install IronPDF(hosted on nuget.org)
dotnet add package IronPdf
# Install IronPDF(hosted on nuget.org)
dotnet add package IronPdf
SHELL

Krok 2: Aktualizacja przestrzeni nazw

Zastąp przestrzenie nazw Telerik przestrzenią nazw IronPDF:

// Before (Telerik Reporting)
using Telerik.Reporting;
using Telerik.Reporting.Processing;
using Telerik.Reporting.Drawing;

// After (IronPDF)
using IronPdf;
// Before (Telerik Reporting)
using Telerik.Reporting;
using Telerik.Reporting.Processing;
using Telerik.Reporting.Drawing;

// After (IronPDF)
using IronPdf;
Imports Telerik.Reporting
Imports Telerik.Reporting.Processing
Imports Telerik.Reporting.Drawing

' After (IronPDF)
Imports IronPdf
$vbLabelText   $csharpLabel

Krok 3: Inicjalizacja licencji

Dodaj inicjalizację licencji podczas uruchamiania aplikacji:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

Przykłady migracji kodu

Konwersja HTML do PDF

Najczęstszy przypadek użycia ilustruje różnicę architektoniczną między tymi bibliotekami .NET do obsługi plików PDF.

Podejście Telerik do raportowania:

// NuGet: Install-Package Telerik.Reporting
using Telerik.Reporting;
using Telerik.Reporting.Processing;
using System.Collections.Specialized;

class TelerikExample
{
    static void Main()
    {
        var reportSource = new Telerik.Reporting.TypeReportSource();
        var instanceReportSource = new Telerik.Reporting.InstanceReportSource();
        instanceReportSource.ReportDocument = new Telerik.Reporting.Report()
        {
            Items = { new Telerik.Reporting.HtmlTextBox() { Value = "<h1>Hello World</h1><p>Sample HTML content</p>" } }
        };

        var reportProcessor = new ReportProcessor();
        var result = reportProcessor.RenderReport("PDF", instanceReportSource, null);

        using (var fs = new System.IO.FileStream("output.pdf", System.IO.FileMode.Create))
        {
            fs.Write(result.DocumentBytes, 0, result.DocumentBytes.Length);
        }
    }
}
// NuGet: Install-Package Telerik.Reporting
using Telerik.Reporting;
using Telerik.Reporting.Processing;
using System.Collections.Specialized;

class TelerikExample
{
    static void Main()
    {
        var reportSource = new Telerik.Reporting.TypeReportSource();
        var instanceReportSource = new Telerik.Reporting.InstanceReportSource();
        instanceReportSource.ReportDocument = new Telerik.Reporting.Report()
        {
            Items = { new Telerik.Reporting.HtmlTextBox() { Value = "<h1>Hello World</h1><p>Sample HTML content</p>" } }
        };

        var reportProcessor = new ReportProcessor();
        var result = reportProcessor.RenderReport("PDF", instanceReportSource, null);

        using (var fs = new System.IO.FileStream("output.pdf", System.IO.FileMode.Create))
        {
            fs.Write(result.DocumentBytes, 0, result.DocumentBytes.Length);
        }
    }
}
Imports Telerik.Reporting
Imports Telerik.Reporting.Processing
Imports System.Collections.Specialized
Imports System.IO

Class TelerikExample
    Shared Sub Main()
        Dim reportSource As New Telerik.Reporting.TypeReportSource()
        Dim instanceReportSource As New Telerik.Reporting.InstanceReportSource()
        instanceReportSource.ReportDocument = New Telerik.Reporting.Report() With {
            .Items = {New Telerik.Reporting.HtmlTextBox() With {.Value = "<h1>Hello World</h1><p>Sample HTML content</p>"}}
        }

        Dim reportProcessor As New ReportProcessor()
        Dim result = reportProcessor.RenderReport("PDF", instanceReportSource, Nothing)

        Using fs As New FileStream("output.pdf", FileMode.Create)
            fs.Write(result.DocumentBytes, 0, result.DocumentBytes.Length)
        End Using
    End Sub
End Class
$vbLabelText   $csharpLabel

Podejście IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class IronPdfExample
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>Sample HTML content</p>");
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class IronPdfExample
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>Sample HTML content</p>");
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf
Imports System

Class IronPdfExample
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>Sample HTML content</p>")
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Wersja Telerik wymaga utworzenia TypeReportSource, InstanceReportSource, obiektu Report z HtmlTextBox, ReportProcessor oraz ręcznego zarządzania strumieniem plików. ChromePdfRendererIronPDF obsługuje cały proces przy użyciu trzech linii kodu.

W przypadku zaawansowanych scenariuszy konwersji HTML do PDF zapoznaj się z przewodnikiem po konwersji HTML do PDF.

Konwersja adresów URL do formatu PDF

Konwersja adresów URL do formatu PDF ujawnia znaczną lukę w możliwościach Telerik Reporting.

Podejście Telerik do raportowania:

// NuGet: Install-Package Telerik.Reporting
using Telerik.Reporting;
using Telerik.Reporting.Processing;
using System.Net;

class TelerikExample
{
    static void Main()
    {
        string htmlContent;
        using (var client = new WebClient())
        {
            htmlContent = client.DownloadString("https://example.com");
        }

        var report = new Telerik.Reporting.Report();
        var htmlTextBox = new Telerik.Reporting.HtmlTextBox()
        {
            Value = htmlContent
        };
        report.Items.Add(htmlTextBox);

        var instanceReportSource = new Telerik.Reporting.InstanceReportSource();
        instanceReportSource.ReportDocument = report;

        var reportProcessor = new ReportProcessor();
        var result = reportProcessor.RenderReport("PDF", instanceReportSource, null);

        using (var fs = new System.IO.FileStream("webpage.pdf", System.IO.FileMode.Create))
        {
            fs.Write(result.DocumentBytes, 0, result.DocumentBytes.Length);
        }
    }
}
// NuGet: Install-Package Telerik.Reporting
using Telerik.Reporting;
using Telerik.Reporting.Processing;
using System.Net;

class TelerikExample
{
    static void Main()
    {
        string htmlContent;
        using (var client = new WebClient())
        {
            htmlContent = client.DownloadString("https://example.com");
        }

        var report = new Telerik.Reporting.Report();
        var htmlTextBox = new Telerik.Reporting.HtmlTextBox()
        {
            Value = htmlContent
        };
        report.Items.Add(htmlTextBox);

        var instanceReportSource = new Telerik.Reporting.InstanceReportSource();
        instanceReportSource.ReportDocument = report;

        var reportProcessor = new ReportProcessor();
        var result = reportProcessor.RenderReport("PDF", instanceReportSource, null);

        using (var fs = new System.IO.FileStream("webpage.pdf", System.IO.FileMode.Create))
        {
            fs.Write(result.DocumentBytes, 0, result.DocumentBytes.Length);
        }
    }
}
Imports Telerik.Reporting
Imports Telerik.Reporting.Processing
Imports System.Net
Imports System.IO

Class TelerikExample
    Shared Sub Main()
        Dim htmlContent As String
        Using client As New WebClient()
            htmlContent = client.DownloadString("https://example.com")
        End Using

        Dim report As New Telerik.Reporting.Report()
        Dim htmlTextBox As New Telerik.Reporting.HtmlTextBox() With {
            .Value = htmlContent
        }
        report.Items.Add(htmlTextBox)

        Dim instanceReportSource As New Telerik.Reporting.InstanceReportSource()
        instanceReportSource.ReportDocument = report

        Dim reportProcessor As New ReportProcessor()
        Dim result = reportProcessor.RenderReport("PDF", instanceReportSource, Nothing)

        Using fs As New FileStream("webpage.pdf", FileMode.Create)
            fs.Write(result.DocumentBytes, 0, result.DocumentBytes.Length)
        End Using
    End Sub
End Class
$vbLabelText   $csharpLabel

Podejście IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class IronPdfExample
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("webpage.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class IronPdfExample
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("webpage.pdf");
    }
}
Imports IronPdf
Imports System

Class IronPdfExample
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderUrlAsPdf("https://example.com")
        pdf.SaveAs("webpage.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Telerik Reporting nie posiada wbudowanej metody konwersji URL na PDF — samodzielnie pobierasz HTML (tutaj przez WebClient), a silnik po stronie serwera nie wykonuje JavaScript, więc zewnętrzne skrypty i dynamiczna treść nie są renderowane. Metoda RenderUrlAsPdfIronPDF rejestruje kompletną renderowaną stronę dokładnie tak, jak jest widziana w przeglądarce.

Zapoznaj się z dokumentacją dotyczącą konwersji adresów URL do formatu PDF, aby uzyskać informacje na temat uwierzytelniania i opcji niestandardowych nagłówków.

Wdrażanie nagłówków i stopek z numerami stron

Nagłówki i stopki z dynamicznymi numerami stron są niezbędne w profesjonalnych dokumentach. Podejścia do implementacji znacznie się różnią.

Podejście Telerik do raportowania:

// NuGet: Install-Package Telerik.Reporting
using Telerik.Reporting;
using Telerik.Reporting.Processing;
using Telerik.Reporting.Drawing;

class TelerikExample
{
    static void Main()
    {
        var report = new Telerik.Reporting.Report();

        // Add page header
        var pageHeader = new Telerik.Reporting.PageHeaderSection();
        pageHeader.Height = new Unit(0.5, UnitType.Inch);
        pageHeader.Items.Add(new Telerik.Reporting.TextBox()
        {
            Value = "Document Header",
            Location = new PointU(0, 0),
            Size = new SizeU(new Unit(6, UnitType.Inch), new Unit(0.3, UnitType.Inch))
        });
        report.PageHeaderSection = pageHeader;

        // Add page footer
        var pageFooter = new Telerik.Reporting.PageFooterSection();
        pageFooter.Height = new Unit(0.5, UnitType.Inch);
        pageFooter.Items.Add(new Telerik.Reporting.TextBox()
        {
            Value = "Page {PageNumber} of {PageCount}",
            Location = new PointU(0, 0),
            Size = new SizeU(new Unit(6, UnitType.Inch), new Unit(0.3, UnitType.Inch))
        });
        report.PageFooterSection = pageFooter;

        // Add content
        var htmlTextBox = new Telerik.Reporting.HtmlTextBox()
        {
            Value = "<h1>Report Content</h1><p>This is the main content.</p>"
        };
        report.Items.Add(htmlTextBox);

        var instanceReportSource = new Telerik.Reporting.InstanceReportSource();
        instanceReportSource.ReportDocument = report;

        var reportProcessor = new ReportProcessor();
        var result = reportProcessor.RenderReport("PDF", instanceReportSource, null);

        using (var fs = new System.IO.FileStream("report_with_headers.pdf", System.IO.FileMode.Create))
        {
            fs.Write(result.DocumentBytes, 0, result.DocumentBytes.Length);
        }
    }
}
// NuGet: Install-Package Telerik.Reporting
using Telerik.Reporting;
using Telerik.Reporting.Processing;
using Telerik.Reporting.Drawing;

class TelerikExample
{
    static void Main()
    {
        var report = new Telerik.Reporting.Report();

        // Add page header
        var pageHeader = new Telerik.Reporting.PageHeaderSection();
        pageHeader.Height = new Unit(0.5, UnitType.Inch);
        pageHeader.Items.Add(new Telerik.Reporting.TextBox()
        {
            Value = "Document Header",
            Location = new PointU(0, 0),
            Size = new SizeU(new Unit(6, UnitType.Inch), new Unit(0.3, UnitType.Inch))
        });
        report.PageHeaderSection = pageHeader;

        // Add page footer
        var pageFooter = new Telerik.Reporting.PageFooterSection();
        pageFooter.Height = new Unit(0.5, UnitType.Inch);
        pageFooter.Items.Add(new Telerik.Reporting.TextBox()
        {
            Value = "Page {PageNumber} of {PageCount}",
            Location = new PointU(0, 0),
            Size = new SizeU(new Unit(6, UnitType.Inch), new Unit(0.3, UnitType.Inch))
        });
        report.PageFooterSection = pageFooter;

        // Add content
        var htmlTextBox = new Telerik.Reporting.HtmlTextBox()
        {
            Value = "<h1>Report Content</h1><p>This is the main content.</p>"
        };
        report.Items.Add(htmlTextBox);

        var instanceReportSource = new Telerik.Reporting.InstanceReportSource();
        instanceReportSource.ReportDocument = report;

        var reportProcessor = new ReportProcessor();
        var result = reportProcessor.RenderReport("PDF", instanceReportSource, null);

        using (var fs = new System.IO.FileStream("report_with_headers.pdf", System.IO.FileMode.Create))
        {
            fs.Write(result.DocumentBytes, 0, result.DocumentBytes.Length);
        }
    }
}
Imports Telerik.Reporting
Imports Telerik.Reporting.Processing
Imports Telerik.Reporting.Drawing
Imports System.IO

Class TelerikExample
    Shared Sub Main()
        Dim report As New Telerik.Reporting.Report()

        ' Add page header
        Dim pageHeader As New Telerik.Reporting.PageHeaderSection()
        pageHeader.Height = New Unit(0.5, UnitType.Inch)
        pageHeader.Items.Add(New Telerik.Reporting.TextBox() With {
            .Value = "Document Header",
            .Location = New PointU(0, 0),
            .Size = New SizeU(New Unit(6, UnitType.Inch), New Unit(0.3, UnitType.Inch))
        })
        report.PageHeaderSection = pageHeader

        ' Add page footer
        Dim pageFooter As New Telerik.Reporting.PageFooterSection()
        pageFooter.Height = New Unit(0.5, UnitType.Inch)
        pageFooter.Items.Add(New Telerik.Reporting.TextBox() With {
            .Value = "Page {PageNumber} of {PageCount}",
            .Location = New PointU(0, 0),
            .Size = New SizeU(New Unit(6, UnitType.Inch), New Unit(0.3, UnitType.Inch))
        })
        report.PageFooterSection = pageFooter

        ' Add content
        Dim htmlTextBox As New Telerik.Reporting.HtmlTextBox() With {
            .Value = "<h1>Report Content</h1><p>This is the main content.</p>"
        }
        report.Items.Add(htmlTextBox)

        Dim instanceReportSource As New Telerik.Reporting.InstanceReportSource()
        instanceReportSource.ReportDocument = report

        Dim reportProcessor As New ReportProcessor()
        Dim result = reportProcessor.RenderReport("PDF", instanceReportSource, Nothing)

        Using fs As New FileStream("report_with_headers.pdf", FileMode.Create)
            fs.Write(result.DocumentBytes, 0, result.DocumentBytes.Length)
        End Using
    End Sub
End Class
$vbLabelText   $csharpLabel

Podejście IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class IronPdfExample
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        // Configure header and footer
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Document Header</div>"
        };

        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages}</div>"
        };

        var pdf = renderer.RenderHtmlAsPdf("<h1>Report Content</h1><p>This is the main content.</p>");
        pdf.SaveAs("report_with_headers.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class IronPdfExample
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        // Configure header and footer
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Document Header</div>"
        };

        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages}</div>"
        };

        var pdf = renderer.RenderHtmlAsPdf("<h1>Report Content</h1><p>This is the main content.</p>");
        pdf.SaveAs("report_with_headers.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Rendering
Imports System

Class IronPdfExample
    Shared Sub Main()
        Dim renderer As New ChromePdfRenderer()

        ' Configure header and footer
        renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
            .HtmlFragment = "<div style='text-align:center'>Document Header</div>"
        }

        renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With {
            .HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages}</div>"
        }

        Dim pdf = renderer.RenderHtmlAsPdf("<h1>Report Content</h1><p>This is the main content.</p>")
        pdf.SaveAs("report_with_headers.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Telerik Reporting wymaga utworzenia obiektów PageHeaderSection i PageFooterSection, skonfigurowania pomiarów Unit, ustawienia właściwości Location i Size oraz zarządzania elementami TextBox z określonymi współrzędnymi. Podejście oparte na HTML w IronPDF używa znanego stylowania CSS i prostych symbolów zastępczych, takich jak {page} i {total-pages}.

Więcej informacji na temat opcji nagłówków i stopek można znaleźć w dokumentacji dotyczącej nagłówków i stopek.

Odnośnik do dokumentacji APITelerik Reportingdla IronPDF

To mapowanie przyspiesza migrację, pokazując bezpośrednie odpowiedniki API:

Telerik Reporting IronPDF
Report klasa ChromePdfRenderer
ReportProcessor renderer.RenderHtmlAsPdf()
ReportSource Ciąg znaków HTML lub plik
.trdp / .trdx pliki Szablony HTML/CSS
ReportParameter Interpolacja ciągów znaków / Razor
ReportDataSource Powiązanie danych w języku C#
RenderReport("PDF") RenderHtmlAsPdf()
Export() pdf.SaveAs()
TextBox element raportu HTML ,

,

Table element raportu HTML
PictureBox HTML
PageSettings RenderingOptions

Typowe problemy związane z migracją i ich rozwiązania

Problem 1: Definicje raportów (pliki .trdp/.trdx)

Telerik Reporting wykorzystuje własne definicje raportów XML, których nie można bezpośrednio konwertować.

Rozwiązanie: Przekonwertuj na szablony HTML, otwierając raport w projektancie, dokumentując układ, powiązania danych i formatowanie, a następnie odtwarzając je jako szablony HTML/CSS. W złożonych scenariuszach do powiązania danych należy używać Razor.

Problem 2: Powiązanie źródła danych

Telerik Reporting używa SqlDataSource i źródeł danych obiektów z powiązaniami do wyrażeń.

Rozwiązanie: Pobieranie danych w języku C# i powiązanie z HTML:

var data = await dbContext.Orders.ToListAsync();
var html = $"<table>{string.Join("", data.Select(d => $"<tr><td>{d.Name}</td></tr>"))}</table>";
var data = await dbContext.Orders.ToListAsync();
var html = $"<table>{string.Join("", data.Select(d => $"<tr><td>{d.Name}</td></tr>"))}</table>";
Dim data = Await dbContext.Orders.ToListAsync()
Dim html = $"<table>{String.Join("", data.Select(Function(d) $"<tr><td>{d.Name}</td></tr>"))}</table>"
$vbLabelText   $csharpLabel

Problem 3: Parametry raportu

Telerik Reporting używa ReportParameter z wbudowanym interfejsem użytkownika do parametrów.

Rozwiązanie: Przekazywanie parametrów bezpośrednio do generowania kodu HTML:

public string GenerateReport(string customerId, DateTime fromDate)
{
    return $"<h1>Report for {customerId}</h1><p>From: {fromDate:d}</p>";
}
public string GenerateReport(string customerId, DateTime fromDate)
{
    return $"<h1>Report for {customerId}</h1><p>From: {fromDate:d}</p>";
}
Public Function GenerateReport(customerId As String, fromDate As DateTime) As String
    Return $"<h1>Report for {customerId}</h1><p>From: {fromDate:d}</p>"
End Function
$vbLabelText   $csharpLabel

Problem 4: Funkcje interaktywne

Telerik Reporting zapewnia funkcje drążenia, sortowania i filtrowania w przeglądarce.

Rozwiązanie:IronPDF generuje statyczne pliki PDF. Aby zapewnić interaktywność, zachowaj dane w interfejsie użytkownika i wygeneruj plik PDF, gdy użytkownik kliknie "Eksportuj". Pozwoli to oddzielić interaktywne przeglądanie danych od generowania dokumentów.

Lista kontrolna migracji Telerik Reporting

Zadania przed migracją

Przeprowadź audyt kodu źródłowego, aby zidentyfikować wszystkie przypadki użycia Telerik Reporting:

grep -r "using Telerik.Reporting" --include="*.cs" .
grep -r "Report\|ReportProcessor" --include="*.cs" .
grep -r "using Telerik.Reporting" --include="*.cs" .
grep -r "Report\|ReportProcessor" --include="*.cs" .
SHELL

Należy udokumentować źródła danych i parametry, wykonać zrzuty ekranu aktualnych układów raportów w celach wizualnych oraz zidentyfikować wspólne komponenty raportów, które można przekształcić w szablony HTML nadające się do ponownego wykorzystania.

Zadania związane z aktualizacją kodu

  1. Usuń pakiety Telerik NuGet
  2. Zainstaluj pakiet NuGet IronPDF
  3. Konwertuj pliki .trdx na szablony HTML
  4. Zamień ReportProcessor na ChromePdfRenderer
  5. Zaktualizuj powiązanie danych do interpolacji ciągów znaków lub Razor
  6. Konwertuj nagłówki/stopki na HTML za pomocą HtmlHeaderFooter
  7. Dodaj inicjalizację licencji podczas uruchamiania

Testy po migracji

Po migracji należy zweryfikować następujące aspekty:

  • Porównaj wizualnie pliki PDF z oryginalnymi raportami
  • Sprawdź poprawność danych w wygenerowanych plikach PDF
  • Testowanie paginacji w dokumentach wielostronicowych
  • Sprawdź, czy nagłówki/stopki wyświetlają się poprawnie na wszystkich stronach
  • Przeprowadź testy wydajności dla scenariuszy o dużej objętości

Kluczowe korzyści z migracji do IronPDF

Przejście zTelerik Reportingna IronPDF zapewnia szereg korzyści dla zespołów zajmujących się generowaniem plików PDF:

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. Pełna obsługa CSS3 i JavaScript oznacza, że projekty stron internetowych są bezpośrednio konwertowane do formatu PDF.

Uproszczone licencjonowanie:IronPDF oferuje licencje na programistę bez konieczności zakupu kompleksowej Suite. Dla zespołów, które potrzebują jedynie generowania plików PDF, oznacza to znaczne oszczędności.

Standardowe technologie internetowe: HTML, CSS i JavaScript to umiejętności, które posiada każdy programista stron internetowych. Nie ma potrzeby uczenia się żadnych zastrzeżonych formatów szablonów ani specjalistycznych narzędzi projektowych.

Mniejsze obciążenie związane z wdrożeniem: Bez infrastruktury usług raportowania i komponentów projektanta wdrożenia są prostsze i szybsze.

Aktywna Praca Rozwojowa: Regularne aktualizacje IronPDFśledzą obecne wersje .NET, więc projekty na nowoczesnym .NET pozostają wspierane bez oczekiwania na kwartalne wydania raportów.

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.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej

Zespół wsparcia Iron

Jesteśmy online 24 godziny, 5 dni w tygodniu.
Czat
E-mail
Zadzwoń do mnie