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:

Kosztowne licencje pakietowe:Telerik Reportingwymaga pakietu DevCraft (ponad 1000 USD na programistę) lub licencji samodzielnej. Dla zespołów, które potrzebują jedynie generowania plików PDF, oznacza to znaczny niewykorzystany potencjał.

Zależności programu Report Designer:Telerik Reportingwymaga zainstalowania rozszerzeń Visual Studio oraz komponentów środowiska uruchomieniowego. Zwiększa to złożoność środowisk programistycznych i procesów CI/CD.

Złożona infrastruktura: Wdrożenia produkcyjne mogą wymagać hostingu usług raportowania, ciągów połączeń i konfiguracji źródeł danych — infrastruktury, która zwiększa obciążenie związane z utrzymaniem w przypadku prostych zadań generowania plików PDF.

Format zastrzeżony: Formaty plików .trdp i .trdx ograniczają użytkownika do ekosystemu Telerik. Migracja lub modyfikacja szablonów wymaga narzędzi Telerik.

Duże obciążenie środowiska uruchomieniowego: Wymagania dotyczące wdrożenia są znaczne w stosunku do tego, co może być prostym zadaniem konwersji HTML do PDF.

Roczna subskrypcja: Bieżące koszty aktualizacji i wsparcia technicznego zwiększają całkowity koszt posiadania.

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.

IronPDFa 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 HTML/CSS/Razor
Krzywa uczenia się Specyficzne dla Telerik Standardowe technologie internetowe
HTML do PDF Ograniczone Pełne renderowanie Chromium
URL do pliku PDF Nie Tak
Obsługa CSS Ograniczone Pełny CSS3
JavaScript Nie Pełna wersja ES2024
Podpisy cyfrowe Nie Tak
PDF/A Nie Tak
Rozmiar w czasie wykonywania Duży 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
dotnet remove package Telerik.Reporting
dotnet remove package Telerik.Reporting.Services.AspNetCore
dotnet remove package Telerik.ReportViewer.Mvc
# RemoveTelerik Reportingpackages
dotnet remove package Telerik.Reporting
dotnet remove package Telerik.Reporting.Services.AspNetCore
dotnet remove package Telerik.ReportViewer.Mvc
SHELL

Zainstaluj IronPDF:

# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
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, Report z HtmlTextBox, ReportProcessor oraz ręczne zarządzanie strumieniem plików. ChromePdfRenderer firmyIronPDFobsługuje cały proces za pomocą trzech wierszy 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 natywnej funkcji konwersji adresów URL do formatu PDF. Musisz ręcznie pobierać zawartość HTML za pomocą WebClient, tracąc przy tym zewnętrzne arkusze CSS, wykonanie JavaScriptu i zawartość dynamiczną. Metoda RenderUrlAsPdf firmyIronPDFprzechwytuje całą wyrenderowaną stronę dokładnie tak, jak wygląda ona 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ądzanie elementami TextBox o określonych współrzędnych. PodejścieIronPDFoparte na HTML wykorzystuje znane style CSS oraz proste symbole zastępcze, takie 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 class 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 zgłoś element HTML <span>, <p>, <div>
Table zgłoś element HTML <table>
PictureBox HTML <img>
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 wykorzystuje SqlDataSource oraz obiektowe źródła danych z powiązaniem 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 wykorzystuje ReportParameter z wbudowanym interfejsem użytkownika 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:IronPDFgeneruje 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 udokumentówać ź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 IronPdf NuGet
  3. Konwersja plików .trdx na szablony HTML
  4. Zastąp ReportProcessor przez ChromePdfRenderer
  5. Zaktualizuj powiązanie danych do interpolacji ciągów znaków lub Razor
  6. Konwersja nagłówków/stopek do formatu HTML przy użyciu 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 ReportingnaIronPDFzapewnia szereg korzyści dla zespołów zajmujących się generowaniem plików PDF:

Nowoczesny silnik renderujący Chromium:IronPDFwykorzystuje 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:IronPDFoferuje 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.

Aktywny rozwój: W miarę jak do 2026 r. wzrośnie popularność .NET 10 i C# 14, regularne aktualizacjeIronPDFzapewnią zgodność z obecnymi i przyszłymi wersjami .NET.

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

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie