Erzeugen von PDF-Berichten in ASP.NET mit C# oder VB
Die Erstellung von Management- oder Datenbankberichten aus strukturierten Daten wie SQL ist eine häufige Aufgabe bei der .NET-Entwicklung. IronPDF kann als PDF-Reader C# verwendet werden und hilft bei der Visualisierung und dem Export von SSIS-Berichten in PDF in ASP.NET C#.
IronPDF kann verwendet werden, um Schnappschüsse von Daten als "Berichte" im PDF-Dateiformat zu erstellen. Es funktioniert auch als PDF-C#-Parser.
C# PDF-Berichte generieren
- IronPDF C# PDF Report Library herunterladen und installieren
- Generieren des Berichts als HTML-Dokument und anschließendes Rendern des HTML-Dokuments als PDF-Datei
- Exportieren Sie nach HTML mit: Datei -> Exportieren und wählen Sie HTML 4.0
- Style einen XML-Bericht, kann das XML geparst und dann HTML mit den Daten generiert werden
- Sicherstellen, dass ein PDF-Bericht nicht verändert oder manipuliert wurde; er kann digital signiert sein
Schritt 1
1. IronPDF installieren
NuGet verwenden: https://www.nuget.org/packages/IronPdf
Install-Package IronPdf
Sie können auch ironPDF DLL manuell herunterladen.
Anleitung zum Tutorial
2. Methodik zur Erstellung eines PDF-Berichts
Die grundlegende Methodik besteht darin, den Bericht zunächst als HTML-Dokument zu erstellen und dann das HTML-Dokument mit IronPDF in ein PDF-Dokument umzuwandeln. Dieses Tutorial zeigt Ihnen, wie Sie einen PDF-Bericht in ASP.NET C# erstellen können.
:path=/static-assets/pdf/content-code-examples/how-to/csharp-pdf-reports-render-html-file.cs
using IronPdf;
ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderHtmlFileAsPdf("report.html").SaveAs("report.pdf");
Imports IronPdf
Private renderer As New ChromePdfRenderer()
renderer.RenderHtmlFileAsPdf("report.html").SaveAs("report.pdf")
3. Crystal Reports als PDF mit .NET
In der Crystal Reports-Anwendung können Sie den Export nach HTML verwenden:
Datei -> Exportieren und HTML 4.0 auswählen
Der resultierende Bericht kann dann mit dem obigen C#-Beispielcode im Abschnitt "Methodik" als PDF exportiert werden.
Hier ist ein Beispiel:
:path=/static-assets/pdf/content-code-examples/how-to/csharp-pdf-reports-render-header-footer.cs
using IronPdf;
using IronSoftware.Drawing;
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Add a header to very page easily
renderer.RenderingOptions.FirstPageNumber = 1;
renderer.RenderingOptions.TextHeader.DrawDividerLine = true;
renderer.RenderingOptions.TextHeader.CenterText = "{url}";
renderer.RenderingOptions.TextHeader.Font = FontTypes.Arial;
renderer.RenderingOptions.TextHeader.FontSize = 12;
// Add a footer too
renderer.RenderingOptions.TextFooter.DrawDividerLine = true;
renderer.RenderingOptions.TextFooter.Font = FontTypes.Arial;
renderer.RenderingOptions.TextFooter.FontSize = 10;
renderer.RenderingOptions.TextFooter.LeftText = "{date} {time}";
renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}";
renderer.RenderHtmlFileAsPdf(@"c:\my\exported\report.html").SaveAs("report.pdf");
Imports IronPdf
Imports IronSoftware.Drawing
Private renderer As New ChromePdfRenderer()
' Add a header to very page easily
renderer.RenderingOptions.FirstPageNumber = 1
renderer.RenderingOptions.TextHeader.DrawDividerLine = True
renderer.RenderingOptions.TextHeader.CenterText = "{url}"
renderer.RenderingOptions.TextHeader.Font = FontTypes.Arial
renderer.RenderingOptions.TextHeader.FontSize = 12
' Add a footer too
renderer.RenderingOptions.TextFooter.DrawDividerLine = True
renderer.RenderingOptions.TextFooter.Font = FontTypes.Arial
renderer.RenderingOptions.TextFooter.FontSize = 10
renderer.RenderingOptions.TextFooter.LeftText = "{date} {time}"
renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}"
renderer.RenderHtmlFileAsPdf("c:\my\exported\report.html").SaveAs("report.pdf")
3.1 Crystal Reports in PDF programmatisch mit C Sharp
Wenn Sie programmatisch arbeiten möchten, um eine PDF-Datei aus einer Crystal Reports(RPT) datei ist dies ebenfalls möglich und gibt Ihnen viel mehr Kontrolle.
CrystalDecisions.Shared.DiskFileDestinationOptions diskOpts = CrystalDecisions.Shared.ExportOptions.CreateDiskFileDestinationOptions();
CrystalDecisions.Shared.ExportOptions exportOpts = new CrystalDecisions.Shared.ExportOptions();
CrystalDecisions.Shared.CharacterSeparatedValuesFormatOptions csvExpOpts = new CrystalDecisions.Shared.CharacterSeparatedValuesFormatOptions();
CrystalDecisions.Shared.HTMLFormatOptions HTMLExpOpts = new CrystalDecisions.Shared.HTMLFormatOptions();
rpt.Load(@"c:\my\report.rpt");
//diskOpts.DiskFileName = "c:\\ReportName.csv";
diskOpts.DiskFileName = @"c:\tmp\html\b.html";
exportOpts.ExportDestinationType = CrystalDecisions.Shared.ExportDestinationType.DiskFile;
exportOpts.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.HTML40;
exportOpts.ExportDestinationOptions = diskOpts;
HTMLExpOpts = new HTMLFormatOptions();
HTMLExpOpts.HTMLBaseFolderName = @"c:\tmp\html\b.html";
HTMLExpOpts.HTMLEnableSeparatedPages = false;
HTMLExpOpts.UsePageRange = false;
HTMLExpOpts.HTMLHasPageNavigator = false;
System.IO.Stream htmlStream;
byte[] htmlByteArray = null;
htmlStream = rpt.ExportThtmlStream(CrystalDecisions.Shared.ExportFormatType.HTML40);
htmlByteArray = new byte[htmlStream.Length];
htmlStream.Read(htmlByteArray, 0, Convert.ToInt32(htmlStream.Length - 1));
System.IO.File.Create(diskOpts.DiskFileName, Convert.ToInt32(htmlStream.Length - 1)).Close();
System.IO.File.OpenWrite(diskOpts.DiskFileName).Write(htmlByteArray, 0, Convert.ToInt32(htmlStream.Length - 1));
System.IO.File.SetAttributes(diskOpts.DiskFileName, System.IO.FileAttributes.Directory);
htmlStream.Close();
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
// Add a header to every page easily
renderer.RenderingOptions.FirstPageNumber = 1;
renderer.RenderingOptions.TextHeader.DrawDividerLine = true;
renderer.RenderingOptions.TextHeader.CenterText = "{url}";
renderer.RenderingOptions.TextHeader.Font = IronSoftware.Drawing.FontTypes.Arial;
renderer.RenderingOptions.TextHeader.FontSize = 12;
// Add a footer too
renderer.RenderingOptions.TextFooter.DrawDividerLine = true;
renderer.RenderingOptions.TextFooter.Font = IronSoftware.Drawing.FontTypes.Arial;
renderer.RenderingOptions.TextFooter.FontSize = 10;
renderer.RenderingOptions.TextFooter.LeftText = "{date} {time}";
renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}";
Renderer.RenderFileAsPdf(diskOpts.DiskFileName).SaveAs("Report.pdf");
Console.WriteLine("Report Written To {0}", Path.GetFullPath(diskOpts.DiskFileName));
CrystalDecisions.Shared.DiskFileDestinationOptions diskOpts = CrystalDecisions.Shared.ExportOptions.CreateDiskFileDestinationOptions();
CrystalDecisions.Shared.ExportOptions exportOpts = new CrystalDecisions.Shared.ExportOptions();
CrystalDecisions.Shared.CharacterSeparatedValuesFormatOptions csvExpOpts = new CrystalDecisions.Shared.CharacterSeparatedValuesFormatOptions();
CrystalDecisions.Shared.HTMLFormatOptions HTMLExpOpts = new CrystalDecisions.Shared.HTMLFormatOptions();
rpt.Load(@"c:\my\report.rpt");
//diskOpts.DiskFileName = "c:\\ReportName.csv";
diskOpts.DiskFileName = @"c:\tmp\html\b.html";
exportOpts.ExportDestinationType = CrystalDecisions.Shared.ExportDestinationType.DiskFile;
exportOpts.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.HTML40;
exportOpts.ExportDestinationOptions = diskOpts;
HTMLExpOpts = new HTMLFormatOptions();
HTMLExpOpts.HTMLBaseFolderName = @"c:\tmp\html\b.html";
HTMLExpOpts.HTMLEnableSeparatedPages = false;
HTMLExpOpts.UsePageRange = false;
HTMLExpOpts.HTMLHasPageNavigator = false;
System.IO.Stream htmlStream;
byte[] htmlByteArray = null;
htmlStream = rpt.ExportThtmlStream(CrystalDecisions.Shared.ExportFormatType.HTML40);
htmlByteArray = new byte[htmlStream.Length];
htmlStream.Read(htmlByteArray, 0, Convert.ToInt32(htmlStream.Length - 1));
System.IO.File.Create(diskOpts.DiskFileName, Convert.ToInt32(htmlStream.Length - 1)).Close();
System.IO.File.OpenWrite(diskOpts.DiskFileName).Write(htmlByteArray, 0, Convert.ToInt32(htmlStream.Length - 1));
System.IO.File.SetAttributes(diskOpts.DiskFileName, System.IO.FileAttributes.Directory);
htmlStream.Close();
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
// Add a header to every page easily
renderer.RenderingOptions.FirstPageNumber = 1;
renderer.RenderingOptions.TextHeader.DrawDividerLine = true;
renderer.RenderingOptions.TextHeader.CenterText = "{url}";
renderer.RenderingOptions.TextHeader.Font = IronSoftware.Drawing.FontTypes.Arial;
renderer.RenderingOptions.TextHeader.FontSize = 12;
// Add a footer too
renderer.RenderingOptions.TextFooter.DrawDividerLine = true;
renderer.RenderingOptions.TextFooter.Font = IronSoftware.Drawing.FontTypes.Arial;
renderer.RenderingOptions.TextFooter.FontSize = 10;
renderer.RenderingOptions.TextFooter.LeftText = "{date} {time}";
renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}";
Renderer.RenderFileAsPdf(diskOpts.DiskFileName).SaveAs("Report.pdf");
Console.WriteLine("Report Written To {0}", Path.GetFullPath(diskOpts.DiskFileName));
Dim diskOpts As CrystalDecisions.Shared.DiskFileDestinationOptions = CrystalDecisions.Shared.ExportOptions.CreateDiskFileDestinationOptions()
Dim exportOpts As New CrystalDecisions.Shared.ExportOptions()
Dim csvExpOpts As New CrystalDecisions.Shared.CharacterSeparatedValuesFormatOptions()
Dim HTMLExpOpts As New CrystalDecisions.Shared.HTMLFormatOptions()
rpt.Load("c:\my\report.rpt")
'diskOpts.DiskFileName = "c:\\ReportName.csv";
diskOpts.DiskFileName = "c:\tmp\html\b.html"
exportOpts.ExportDestinationType = CrystalDecisions.Shared.ExportDestinationType.DiskFile
exportOpts.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.HTML40
exportOpts.ExportDestinationOptions = diskOpts
HTMLExpOpts = New HTMLFormatOptions()
HTMLExpOpts.HTMLBaseFolderName = "c:\tmp\html\b.html"
HTMLExpOpts.HTMLEnableSeparatedPages = False
HTMLExpOpts.UsePageRange = False
HTMLExpOpts.HTMLHasPageNavigator = False
Dim htmlStream As System.IO.Stream
Dim htmlByteArray() As Byte = Nothing
htmlStream = rpt.ExportThtmlStream(CrystalDecisions.Shared.ExportFormatType.HTML40)
htmlByteArray = New Byte(htmlStream.Length - 1){}
htmlStream.Read(htmlByteArray, 0, Convert.ToInt32(htmlStream.Length - 1))
System.IO.File.Create(diskOpts.DiskFileName, Convert.ToInt32(htmlStream.Length - 1)).Close()
System.IO.File.OpenWrite(diskOpts.DiskFileName).Write(htmlByteArray, 0, Convert.ToInt32(htmlStream.Length - 1))
System.IO.File.SetAttributes(diskOpts.DiskFileName, System.IO.FileAttributes.Directory)
htmlStream.Close()
Dim Renderer As New IronPdf.ChromePdfRenderer()
' Add a header to every page easily
renderer.RenderingOptions.FirstPageNumber = 1
renderer.RenderingOptions.TextHeader.DrawDividerLine = True
renderer.RenderingOptions.TextHeader.CenterText = "{url}"
renderer.RenderingOptions.TextHeader.Font = IronSoftware.Drawing.FontTypes.Arial
renderer.RenderingOptions.TextHeader.FontSize = 12
' Add a footer too
renderer.RenderingOptions.TextFooter.DrawDividerLine = True
renderer.RenderingOptions.TextFooter.Font = IronSoftware.Drawing.FontTypes.Arial
renderer.RenderingOptions.TextFooter.FontSize = 10
renderer.RenderingOptions.TextFooter.LeftText = "{date} {time}"
renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}"
Renderer.RenderFileAsPdf(diskOpts.DiskFileName).SaveAs("Report.pdf")
Console.WriteLine("Report Written To {0}", Path.GetFullPath(diskOpts.DiskFileName))
4. XML-Berichte
Der Export von Berichtsdaten als XML ist trotz der Verbreitung von einfacher zu kodierenden Formaten wie JSON immer noch üblich.
Um einen XML-Bericht zu gestalten, kann das XML geparst und dann HTML mit den Daten erzeugt werden.
Eine elegantere Lösung ist die Verwendung von XSLT zur direkten Konvertierung von XML in HTML unter Verwendung der Klasse XslCompiledTransform, wie in dem Artikel Verwendung der Klasse XslCompiledTransform.
Die resultierende HTML-Zeichenfolge oder Datei kann dann mit IronPDF als PDF-Datei gerendert werden:
XslCompiledTransform transform = new XslCompiledTransform();
using (XmlReader reader = XmlReader.Create(new StringReader(xslt)))
{
transform.Load(reader);
}
StringWriter results = new StringWriter();
using (XmlReader reader = XmlReader.Create(new StringReader(xml)))
{
transform.Transform(reader, null, results);
}
IronPdf.ChromePdfRenderer renderer = new IronPdf.ChromePdfRenderer();
// Options, headers, and footers may be set there
// Render our report as a PDF
renderer.RenderHtmlFileAsPdf(results.ToString()).SaveAs("Report.pdf");
XslCompiledTransform transform = new XslCompiledTransform();
using (XmlReader reader = XmlReader.Create(new StringReader(xslt)))
{
transform.Load(reader);
}
StringWriter results = new StringWriter();
using (XmlReader reader = XmlReader.Create(new StringReader(xml)))
{
transform.Transform(reader, null, results);
}
IronPdf.ChromePdfRenderer renderer = new IronPdf.ChromePdfRenderer();
// Options, headers, and footers may be set there
// Render our report as a PDF
renderer.RenderHtmlFileAsPdf(results.ToString()).SaveAs("Report.pdf");
Dim transform As New XslCompiledTransform()
Using reader As XmlReader = XmlReader.Create(New StringReader(xslt))
transform.Load(reader)
End Using
Dim results As New StringWriter()
Using reader As XmlReader = XmlReader.Create(New StringReader(xml))
transform.Transform(reader, Nothing, results)
End Using
Dim renderer As New IronPdf.ChromePdfRenderer()
' Options, headers, and footers may be set there
' Render our report as a PDF
renderer.RenderHtmlFileAsPdf(results.ToString()).SaveAs("Report.pdf")
Bitte besuchen Sie die XML in PDF konvertieren in C# und VB.NET Artikel mehr erfahren.
5. Microsoft SQL Server-Berichte
Microsofts SQL Server und der kostenlose SQL Server Express enthalten Berichtswerkzeuge. Der Export von SSRS-Berichten in eine PDF-Datei in ASP.NET kann eine nützliche Anwendung von IronPDF sein. Anleitung: Auffinden und Starten von Reporting Services Tools (SSRS) Diese Berichte können im HTML-Format erstellt werden, das dann mit IronPDF angepasst und in das PDF-Format konvertiert werden kann. Nach HTML rendern (Report Builder)
6. Bericht Sicherheit
Um sicherzustellen, dass ein PDF-Bericht nicht verändert oder verfälscht wurde, kann er digital signiert werden. Dies ist am einfachsten bei einer PDF-Berichtsdatei möglich, nachdem sie gerendert und auf der Festplatte gespeichert wurde.
:path=/static-assets/pdf/content-code-examples/how-to/csharp-pdf-reports-sign-pdf.cs
using IronPdf.Signing;
// Sign our PDF Report using a p12 or pix digital certificate file
new PdfSignature("IronSoftware.pfx", "123456").SignPdfFile("signed.pdf");
Imports IronPdf.Signing
' Sign our PDF Report using a p12 or pix digital certificate file
Call (New PdfSignature("IronSoftware.pfx", "123456")).SignPdfFile("signed.pdf")
Wenn Sie keine digitale Signatur haben, können Sie mit dem kostenlosen Adobe Acrobat Reader unter macOS und Windows eine neue digitale Signaturdatei erstellen.
7. ASPX zu PDF mit ASP.NET Webforms
Der einfachste Weg, HTML-Inhalte in ASP.NET bereitzustellen, ist die Verwendung der IronPdf.AspxToPdf-Klasse im Form_Load-Ereignis einer ASP.NET WebForms-Anwendung.
var AspxToPdfOptions = new IronPdf.ChromePdfRenderOptions()
{
EnableJavaScript = false,
//.. many more options available
};
IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.Attachment, "Report.pdf", AspxToPdfOptions);
var AspxToPdfOptions = new IronPdf.ChromePdfRenderOptions()
{
EnableJavaScript = false,
//.. many more options available
};
IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.Attachment, "Report.pdf", AspxToPdfOptions);
Dim AspxToPdfOptions = New IronPdf.ChromePdfRenderOptions() With {.EnableJavaScript = False}
IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.Attachment, "Report.pdf", AspxToPdfOptions)
Wir hoffen, dass dieser Artikel Ihnen geholfen hat, zu lernen, wie man einen PDF-Bericht in ASP.NET C# oder VB.NET erstellt. Sie können auch einen Blick auf unsere vollständige ASP.NET ASPX zu PDF Tutorial mehr erfahren.