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
Zainstaluj IronPDF:
# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
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
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"
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
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
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
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
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
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
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>"
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
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" .
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
- Usuń pakiety Telerik NuGet
- Zainstaluj pakiet IronPdf NuGet
- Konwersja plików
.trdxna szablony HTML - Zastąp
ReportProcessorprzezChromePdfRenderer - Zaktualizuj powiązanie danych do interpolacji ciągów znaków lub Razor
- Konwersja nagłówków/stopek do formatu HTML przy użyciu
HtmlHeaderFooter - 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.

