Wie man Bilder mit Daten-URIs in C# | IronPDF einbettet
Telerik Reporting ist eine leistungsstarke Plattform für Unternehmensberichte, die sich bei .NET-Entwicklern für die Erstellung interaktiver Berichte mit visuellen Designern und Drilldown-Funktionen bewährt hat. Für Teams, deren primärer Bedarf in der PDF-Generierung und nicht in einer umfassenden Berichtsinfrastruktur besteht, stellt Telerik-Berichterstattungjedoch oft einen erheblichen Mehraufwand an Lizenzkosten, Bereitstellungskomplexität und Laufzeitaufwand dar.
Dieser Leitfaden bietet einen vollständigen Migrationspfad von Telerik-Berichterstattungzu IronPDF, mit Schritt-für-Schritt-Anleitungen, Code-Vergleichen und praktischen Beispielen für professionelle .NET-Entwickler, die diesen Übergang evaluieren.
Warum von Telerik-Berichterstattungmigrieren
Bei der Entscheidung, von Telerik-Berichterstattungzu migrieren, geht es in der Regel darum, Ihr Tool auf Ihre tatsächlichen Anforderungen abzustimmen. Zu den wichtigsten Gründen, warum Entwicklerteams eine Migration in Betracht ziehen, gehören:
Pro-Entwickler-Lizenzierung: Standalone Telerik-Berichterstattungbeginnt bei ~685 USD pro Entwickler und das umfassendere DevCraft Complete-Bundle beginnt bei ~1.763 USD (2026 Q1, ComponentSource). Beide werden als entweder unbefristet + 1 Jahr Wartung oder als jährliches Abonnement verkauft. Für Teams, die nur die PDF-Erstellung benötigen, stellt dies eine erhebliche ungenutzte Kapazität dar.
Berichtsdesigner-Abhängigkeit: Telerik-Berichterstattungerfordert den Standalone-, Web- oder in Visual Studio integrierten Designer sowie Laufzeit-Assemblies aus dem privaten Telerik NuGet-Feed (https://nuget.telerik.com/v3/index.json, Lizenzschlüssel erforderlich). Dies erhöht die Komplexität von Entwicklungsumgebungen und CI/CD-Pipelines.
Komplexe Infrastruktur: Für HTML5-Viewer-Szenarien hosten Sie auch einen Reporting REST-Service (Telerik.Reporting.Services.AspNetCore) mit Speicher, Resolver- und Viewer-Skript-Konfiguration – eine Infrastruktur, die den Wartungsaufwand für einfache PDF-Generierungsaufgaben erhöht.
Eigenes Format: Die .trdp und .trdx XML-Berichtsdefinitionen (Teleriks eigenes Format — nicht RDL/RDLC, was ausdrücklich nicht unterstützt wird) binden Sie an das Telerik-Ökosystem. Das Migrieren oder Ändern von Vorlagen erfordert Telerik-Tools.
Schweres Laufzeitsystem: Großes Bereitstellungsabdruck für das, was möglicherweise eine einfache HTML-zu-PDF-Konvertierung ist, plus optionale Rendering-DLLs für DOCX/XLSX/PPTX/XPS.
Erneuerbare Wartung: Selbst bei einer unbefristeten Lizenz erfordern laufende Updates, Fehlerbehebungen und Unterstützung die Erneuerung des Wartungsabonnements.
Wenn Telerik-Berichterstattungüberflüssig ist
Wenn Sie Telerik-Berichterstattunghauptsächlich dazu verwenden, PDFs aus Daten zu generieren, zahlen Sie wahrscheinlich für Funktionen, die nicht genutzt werden:
| Sie benötigen | Telerik stellt zur Verfügung (unbenutzt) |
|---|---|
| PDF aus HTML | Visueller Designer, Drilldowns |
| Einfache Berichte | Interaktiver Betrachter, Exporte |
| Server-seitige PDFs | Desktop-Steuerelemente, Charting-Engine |
IronPDF bietet eine zielgerichtete PDF-Generierung ohne den Aufwand für Unternehmensberichte.
IronPDF vs. Telerik Reporting: Funktionsvergleich
Das Verständnis der architektonischen Unterschiede hilft technischen Entscheidungsträgern, die Investition in die Migration zu bewerten:
| Feature | Telerik-Berichterstattung | IronPDF |
|---|---|---|
| Schwerpunkt | Berichtserstellung mit PDF-Exportoption | Umfassende PDF-Generierung aus HTML |
| Integration | Nahtlos mit ASP.NET Core-Anwendungen | Kann in jede .NET-Anwendung integriert werden |
| Komplexität der Einrichtung | Erfordert die Installation eines Berichtsdesigners | Einfache NuGet-Installation |
| Preisgestaltung | Teil der kommerziellen DevCraft-Suite | Getrennte Lizenzierung, kostengünstiger für eigenständige PDF-Erstellung |
| PDF-Erstellung | Begrenzt auf Berichtsexporte | Voller Funktionsumfang mit erweiterter PDF-Bearbeitung |
| Zielpublikum | Entwickler, die berichtszentrierte Lösungen benötigen | Entwickler, die flexible Lösungen zur PDF-Erzeugung benötigen |
| Vorlage Format | .trdp / .trdx (XML; nicht RDL/RDLC) |
HTML/CSS/Razor |
| Lernkurve | Telerik-spezifisch (Ausdruckssprache, Abschnitte) | Standard-Webtechnologien |
| HTML zu PDF | Server-seitig über HtmlTextBox (begrenzt auf HTML/CSS) |
Vollständige Chromium-Wiedergabe |
| URL zu PDF | Nicht eingebaut (HTML selbst abrufen) | Ja |
| CSS-Unterstützung | Begrenzt (CSS-ähnliche Selektoren im Designer) | Vollständig CSS3 |
| JavaScript zur Renderzeit | Nein (Server-Engine führt JS nicht aus) | Vollständiger ES2024 |
| Digitale Signaturen | Ja (X.509 / .PFX über PDF-Geräteinfo) | Ja |
| PDF/A | PDF/A-1b, PDF/A-2b, PDF/A-3b | PDF/A-3 |
| Laufzeitumfang | Groß (Engine + Rendering-DLLs pro Format) | Kleiner |
Schnellstart: Telerik-Berichterstattungzu IronPDF Migration
Mit diesen grundlegenden Schritten kann die Migration sofort beginnen.
Schritt 1: Ersetzen von NuGet-Paketen
Entfernen Sie alle Telerik Reporting-Pakete:
# Remove Telerik-Berichterstattungpackages (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
# Remove Telerik-Berichterstattungpackages (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
IronPDF installieren:
# Install IronPDF(hosted on nuget.org)
dotnet add package IronPdf
# Install IronPDF(hosted on nuget.org)
dotnet add package IronPdf
Schritt 2: Namespaces aktualisieren
Ersetze Telerik-Namensräume durch den IronPDF-Namespace:
// 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
Schritt 3: Lizenz initialisieren
Hinzufügen der Lizenzinitialisierung beim Start der Anwendung:
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Beispiele für die Code-Migration
Konvertierung von HTML in PDF
Der häufigste Anwendungsfall verdeutlicht den architektonischen Unterschied zwischen diesen .NET-PDF-Bibliotheken.
Telerik Reporting Ansatz:
// 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
IronPDF-Ansatz:
// 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
Die Telerik-Version erfordert das Erstellen eines TypeReportSource, eines InstanceReportSource, eines Report-Objekts mit einem HtmlTextBox, eines ReportProcessor sowie die manuelle Verwaltung des Dateistreams. IronPDF's ChromePdfRenderer erledigt den gesamten Prozess mit drei Codezeilen.
Für fortgeschrittene HTML-zu-PDF-Szenarien siehe den HTML-zu-PDF-Konvertierungsleitfaden.
Konvertierung von URLs zu PDF
Die URL-zu-PDF-Konvertierung offenbart eine erhebliche Fähigkeitslücke in Telerik Reporting.
Telerik Reporting Ansatz:
// 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
IronPDF-Ansatz:
// 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 hat keine eingebaute URL-zu-PDF-Methode – Sie holen das HTML selbst (hier über WebClient), und die serverseitige Engine führt kein JavaScript aus, sodass externe Skripte und dynamische Inhalte nicht gerendert werden. IronPDF's RenderUrlAsPdf-Methode erfasst die vollständig gerenderte Seite genau so, wie sie im Browser angezeigt wird.
In der URL zur PDF-Dokumentation finden Sie Informationen zur Authentifizierung und zu benutzerdefinierten Kopfzeilenoptionen.
Kopf- und Fußzeilen mit Seitenzahlen einfügen
Kopf- und Fußzeilen mit dynamischen Seitenzahlen sind für professionelle Dokumente unerlässlich. Die Implementierungsansätze unterscheiden sich erheblich.
Telerik Reporting Ansatz:
// 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
IronPDF-Ansatz:
// 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 erfordert das Erstellen der PageHeaderSection- und PageFooterSection-Objekte, das Konfigurieren von Unit-Messungen, das Festlegen von Location- und Size-Eigenschaften sowie die Verwaltung von TextBox-Elementen mit spezifischen Koordinaten. IronPDF's HTML-basierte Ansatz verwendet vertraute CSS-Stile und einfache Platzhalter wie {page} und {total-pages}.
Weitere Informationen über Kopf- und Fußzeilenoptionen finden Sie in der Kopf- und Fußzeilen-Dokumentation.
Telerik-BerichterstattungAPI zu IronPDF Mapping Referenz
Dieses Mapping beschleunigt die Migration, indem es direkte API-Entsprechungen aufzeigt:
| Telerik-Berichterstattung | IronPDF |
|---|---|
Report Klasse |
ChromePdfRenderer |
ReportProcessor |
renderer.RenderHtmlAsPdf() |
ReportSource |
HTML-Zeichenfolge oder Datei |
.trdp / .trdx Dateien |
HTML/CSS-Vorlagen |
ReportParameter |
String-Interpolation / Razor |
ReportDataSource |
C#-Datenbindung |
RenderReport("PDF") |
RenderHtmlAsPdf() |
Export() |
pdf.SaveAs() |
TextBox Berichtsobjekt |
HTML <span>, <p>, <div> |
Table Berichtsobjekt |
HTML <table> |
PictureBox |
HTML <img> |
PageSettings |
RenderingOptions |
Gängige Migrationsprobleme und Lösungen
Ausgabe 1: Berichtsdefinitionen (.trdp/.trdx-Dateien)
Telerik Reporting verwendet proprietäre XML-Berichtsdefinitionen, die nicht direkt konvertiert werden können.
Lösung: Konvertieren Sie den Bericht in HTML-Vorlagen, indem Sie ihn im Designer öffnen, das Layout, die Datenverbindungen und die Formatierung dokumentieren und dann als HTML/CSS-Vorlagen neu erstellen. Verwenden Sie Razor für die Datenbindung in komplexen Szenarien.
Ausgabe 2: Bindung von Datenquellen
Telerik Reporting verwendet SqlDataSource und Objektdatensourcen mit Ausdrucksbindung.
Lösung: Abrufen von Daten in C# und Einbinden in 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>"
Ausgabe 3: Bericht-Parameter
Telerik Reporting verwendet ReportParameter mit integrierter Parameter-UI.
Lösung: Übergeben Sie Parameter direkt an die HTML-Generierung:
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
Ausgabe 4: Interaktive Funktionen
Telerik Reporting bietet Drilldown, Sortierung und Filterung im Viewer.
Lösung:IronPDF generiert statische PDFs. Um Interaktivität zu gewährleisten, sollten Sie die Daten in Ihrer Web-UI behalten und eine PDF-Datei erzeugen, wenn der Benutzer auf "Exportieren" klickt Dadurch wird eine Trennung zwischen interaktiver Datenexploration und Dokumentenerstellung erreicht.
Telerik-BerichterstattungMigration Checkliste
Vor der Migration anfallende Aufgaben
Überprüfen Sie Ihre Codebasis, um alle Verwendungen von Telerik-Berichterstattungzu identifizieren:
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" .
Dokumentieren Sie Datenquellen und Parameter, machen Sie Screenshots von aktuellen Berichtslayouts als visuelle Referenz und identifizieren Sie gemeinsame Berichtskomponenten, die in wiederverwendbare HTML-Vorlagen konvertiert werden können.
Aufgaben der Code-Aktualisierung
- Telerik NuGet-Pakete entfernen 2.IronPDF NuGet-Paket installieren
- Konvertieren von
.trdxDateien in HTML-Vorlagen - Ersetzen Sie
ReportProcessordurchChromePdfRenderer - Aktualisierung der Datenbindung auf String-Interpolation oder Razor
- Konvertieren Sie Kopf-/Fußzeilen in HTML mit
HtmlHeaderFooter - Lizenzinitialisierung beim Start hinzufügen
Post-Migrationstests
Überprüfen Sie diese Aspekte nach der Migration:
- Visueller Vergleich der PDF-Ausgabe mit den Originalberichten
- Überprüfen der Datengenauigkeit in den generierten PDFs
- Test der Paginierung für mehrseitige Dokumente
- Überprüfen Sie, ob die Kopf- und Fußzeilen auf allen Seiten korrekt angezeigt werden
- Durchführung von Leistungstests für hochvolumige Szenarien
Die wichtigsten Vorteile der Migration zu IronPDF
Der Wechsel von Telerik-Berichterstattungzu IronPDF bietet mehrere Vorteile für Teams, die sich auf die PDF-Erstellung konzentrieren:
Moderne Chromium-Rendering-Engine:IronPDF verwendet dieselbe Rendering-Engine wie Google Chrome, wodurch sichergestellt wird, dass PDFs genau so dargestellt werden, wie der Inhalt in modernen Browsern erscheint. Dank der vollständigen CSS3- und JavaScript-Unterstützung werden Ihre Web-Designs direkt in das PDF-Format übersetzt.
Vereinfachte Lizenzierung:IronPDF bietet Lizenzen pro Entwickler an, ohne dass der Kauf einer kompletten Suite erforderlich ist. Für Teams, die nur die PDF-Erstellung benötigen, bedeutet dies eine erhebliche Kosteneinsparung.
Standard-Webtechnologien: HTML, CSS und JavaScript sind Fähigkeiten, die jeder Webentwickler besitzt. Es müssen keine proprietären Vorlagenformate oder spezielle Designer-Tools erlernt werden.
Geringerer Bereitstellungsaufwand: Da keine Berichtsdienstinfrastruktur und keine Designerkomponenten benötigt werden, sind Bereitstellungen einfacher und schneller.
Aktive Entwicklung: IronPDFs regelmäßige Updates verfolgen aktuelle .NET-Versionen, sodass Projekte auf modernen .NET-Versionen ohne Warten auf eine vierteljährliche Berichtsausgabe unterstützt bleiben.

