Erzeugen von PDF-Berichten in ASP.NET mit C# oder VB

This article was translated from English: Does it need improvement?
Translated
View the article in English

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 ssrs-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.


Schritt 1

1. IronPDF installieren

NuGet verwenden: https://www.nuget.org/packages/IronPdf

Install-Package IronPdf

Sie können auchherunterladen die IronPDF DLL manuell zu installieren.


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")
VB   C#

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")
VB   C#

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 very 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");
Cosole.WriteLine("Report Weitten 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 very 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");
Cosole.WriteLine("Report Weitten To {0}", Path.GetFullPath(diskOpts.DiskFileName));
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

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 Umwandlung von XML in HTML unter Verwendung der Klasse XslCompiledTransform, wie in den folgenden Artikeln dokumentiert '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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Bitte besuchen Sie den 'XML in PDF konvertieren in C# und VB.NET' Artikel, um mehr zu 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 (Bericht-Ersteller)

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")
VB   C#

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, um HTML-Inhalte in ASP.NET bereitzustellen, ist die Verwendung der IronPDF.AspxToPdf-Klasse im Form_Load-Ereignis eines ASP.NET WebForms.

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);
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

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ändigeASP.NET ASPX zu PDF Tutorial um mehr zu erfahren.