Générer des rapports PDF en ASP.NET avec C# ou VB
La génération de rapports de gestion ou de base de données à partir de données structurées telles que SQL est une tâche courante du développement .NET. IronPDF peut être utilisé comme un lecteur de PDF C# et aider à visualiser et à exporter des rapports ssrs au format PDF en ASP.NET C#.
IronPDF peut être utilisé pour présenter des instantanés de données sous forme de "rapports" au format PDF. Il fonctionne également comme un analyseur de PDF en C#.
Comment générer des rapports PDF en C# ?
- Télécharger et installer la bibliothèque de rapports PDF C#
- Générer le rapport en tant que document HTML et ensuite rendre le HTML en tant que PDF
- Exporter en HTML en utilisant : Fichier -> Exporter et sélectionner HTML 4.0
- Style d'un rapport XML, le XML peut être analysé puis le HTML généré avec les données
- S'assurer qu'un rapport PDF n'a pas été modifié ou altéré, il peut être signé numériquement
Étape 1
1. Installer IronPDF
Utilisation de NuGet : https://www.nuget.org/packages/IronPdf
Install-Package IronPdf
Vous pouvez également télécharger la DLL IronPDF manuellement.
Comment faire Tutoriel
2. Méthodologie pour la création d'un rapport PDF
La méthodologie de base consiste à générer d'abord le rapport sous forme de document HTML, puis à rendre le HTML sous forme de PDF à l'aide d'IronPDF. Ce tutoriel vous montrera comment créer un rapport PDF en ASP.NET C#.
: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 au format PDF avec .NET
Dans l'application Crystal Reports, vous pouvez exporter au format HTML en utilisant :
Fichier -> Exporter et sélectionner HTML 4.0
Le rapport obtenu peut ensuite être exporté au format PDF à l'aide de l'exemple de code C# présenté dans la section Méthodologie.
En voici un exemple :
: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 au format PDF par programmation avec C Sharp
Si vous souhaitez créer un PDF par programme à partir d'un fichier Crystal Reports(RPT) ce type de fichier est également possible et vous donne beaucoup plus de contrôle.
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));
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 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))
4. Rapports XML
L'exportation de données de rapport au format XML est encore courante malgré la prévalence de formats plus faciles à coder tels que JSON.
Pour styliser un rapport XML, le XML peut être analysé, puis le HTML généré avec les données.
Une solution plus élégante consiste à utiliser XSLT pour convertir XML directement en HTML à l'aide de la classe XslCompiledTransform, comme indiqué dans les articles suivants 'Utilisation de la classe XslCompiledTransform.'
La chaîne ou le fichier HTML qui en résulte peut ensuite être converti en PDF à l'aide d'IronPDF :
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")
Veuillez consulter la page 'Convertir XML en PDF en C# et VB.NETpour en savoir plus.
5. Rapports Microsoft SQL Server
Le serveur SQL de Microsoft et le serveur SQL Express gratuit contiennent des outils de création de rapports. L'exportation de rapports SSRS au format PDF en ASP.NET peut être une utilisation utile d'IronPDF.
Tutoriel : Comment localiser et démarrer les outils Reporting Services (SSRS)
Ces rapports peuvent être générés au format HTML, puis personnalisés et convertis au format PDF à l'aide d'IronPDF.
Rendu en HTML (Constructeur de rapports)
6. Rapport sur la sécurité
Pour garantir qu'un rapport PDF n'a pas été modifié ou altéré, il peut être signé numériquement. Cette opération est plus facile à réaliser sur un fichier de rapport PDF une fois qu'il a été rendu et enregistré sur le disque.
: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")
Si vous n'avez pas de signature numérique, vous pouvez créer un nouveau fichier de signature numérique à l'aide du logiciel gratuit Adobe Acrobat Reader sur macOS et Windows.
7. ASPX vers PDF avec ASP.NET Webforms
La façon la plus simple de servir du contenu html en ASP.NET est d'utiliser la classe IronPDF.AspxToPdf sur l'événement Form_Load d'un formulaire WebForms ASP.NET.
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)
Nous espérons que cet article vous a aidé à apprendre comment générer un rapport PDF en ASP.NET C# ou VB.NET. Vous pouvez également consulter notre Tutoriel ASP.NET ASPX vers PDF pour en savoir plus.