Sortie d’un rapport ActiveReports sous forme de fichier PDF

Page mise à jour :
Date de création de la page :

Environnement d’exploitation

Windows
  • Windows 10 Professionnel 22H2
Visual Studio
  • Visual Studio 2022 Édition Communauté
ActiveReports pour .NET
  • ActiveReports pour .NET 16.0J

Conditions préalables

Windows
  • Windows 8.1
  • Fenêtres 10
  • Fenêtres 11
  • Windows Server 2012
  • Windows Server 2012 R2
  • Windows Server 2016
  • Windows Server 2019
  • Windows Server 2022
Visual Studio
  • Visual Studio 2017
  • Visual Studio 2019
  • Visual Studio 2022
.NET Framework
  • NET Framework 4.6.2 (en anglais)
  • NET Framework 4.7 (en anglais)
  • NET Framework 4.8 (en anglais)
.FILET
  • .NET Core 3.1.1
  • .NET 5
  • .NET 6
ActiveReports pour .NET
  • ActiveReports pour .NET 16.0J

Comment exporter vers un fichier PDF

Si un utilisateur souhaite un rapport sous forme de fichier PDF, le moyen le plus rapide de le fournir est de l’afficher dans la visionneuse. En plus d’afficher les rapports, la visionneuse dispose d’une fonction permettant d’imprimer et de sortir des fichiers tels que des fichiers PDF, de sorte que si vous affichez la visionneuse, vous pouvez demander à l’utilisateur de sortir le fichier PDF.

Cependant, dans certains cas, vous ne voudrez peut-être pas déranger l’utilisateur, ou vous voudrez peut-être diriger systématiquement le fichier PDF. Cette section décrit comment générer par programmation un fichier PDF directement à partir d’un rapport.

Méthodes et limites de sortie des fichiers PDF

Il existe plusieurs façons de produire des fichiers PDF par programmation, mais toutes ne sont pas acceptables. Cela varie en fonction de la version d’ActiveReports, de la plate-forme, de l’infrastructure et du type de rapport qu’il exécute. Par exemple, dans ActiveReports 16, les rapports de section et de page sont générés différemment par programmation. Un exemple de ceci peut également être trouvé sur la page officielle.

Pour cette raison, voici quelques exemples de sortie PDF programmatique que vous pouvez utiliser comme référence pour trouver celle qui convient à votre projet.

À propos de l’exemple de rapport

Le fichier de rapport inclus dans le modèle du nouveau projet est vide, nous utiliserons donc l’exemple de rapport officiel. Voici quelques suggestions, alors n’hésitez pas à les télécharger à partir de l’un des sites suivants.

Dans ce cas, nous utiliserons l’exemple de rapport suivant.

  • Rapport de page : Estimate_page_ipa.rdlx
  • Rapport de section : Invoice.rpx (inclus dans l’exemple de projet WebSample16)

Rendre et générer des fichiers PDF (rapports de page/rapports RDL)

Il existe un « filtre d’exportation » pour la sortie des PDF, mais dans la version 16, il ne peut être utilisé que pour les rapports de section.

Par conséquent, les rapports de page/RDL doivent être générés avec l’extension de dessin comme décrit sur la page ci-dessus.

Tout d’abord, je vais créer un projet, mais cette fois-ci je vais le faire avec une simple application console. Il est tout aussi facile à appliquer aux versions de bureau et Web qu’à la version Web.

Lorsque vous créez un projet, sélectionnez Application console.

Une fois que vous avez créé le projet, ajoutez les packages requis.

Voici ce que vous allez ajouter : Veuillez ne pas obtenir la dernière version, mais utiliser la version décrite ci-dessous. Il semble que certaines combinaisons de paquets ne fonctionnent pas correctement avec la dernière version. Une marque d’avertissement s’affiche, mais ignorez-la, car les dépendances ne correspondent pas. Cependant, il est possible qu’il change avec les mises à niveau de version à l’avenir, veuillez donc l’ajuster à chaque fois. GrapeCity.Documents.Imaging GrapeCity.Documents.Pdf et sont tenus d’effectuer un rendu au format PDF.

  • GrapeCity.ActiveReports.Export.Pdf (16.4.0)
  • Imagerie.Documents.CitéRaisin (6.0.3)
  • GrapeCity.Documents.Pdf (6.0.3)

Ajoutez un fichier de rapport à votre projet. L’emplacement peut être n’importe Reports où, mais cette fois-ci, je crée un dossier et je le mets là-dedans. Cet emplacement de placement affecte le chemin que vous spécifiez ultérieurement.

Ensuite, ouvrez les propriétés du rapport que vous avez ajouté.

Définissez l’action de génération sur Ressource incorporée. Cela signifie l’incorporation de la ressource à l’intérieur d’un EXE (DLL). Le rapport est chargé de manière unique sur le bureau comme sur le Web.

Ensuite, écrivez le code pour charger le rapport et imprimez-le au format PDF. Puisqu’il s’agit d’une application console, elle doit être décrite dans Programme.cs telle quelle, mais s’il s’agit d’un bureau, elle doit être décrite dans un événement de bouton, etc., et si elle est ASP.NET, elle doit être décrite à l’endroit où elle est traitée lorsqu’elle est publiée.

// レポートファイルがあるパス
var reportPath = "ConsoleApp1.Reports.Estimate_page_ipa.rdlx";

// 埋め込みリソースを Stream をして取り出す
var stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(reportPath);
if (stream == null) return;

// ページレポートに変換します
using var sr = new StreamReader(stream);
var pageReport = new GrapeCity.ActiveReports.PageReport(sr);

// PDF 描画拡張を定義します
var pdfRenderingExtension = new GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension();

// メモリストリームとして出力する定義です
var outputProvider = new GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider();

// レポートを PDF にレンダリングします
pageReport.Document.Render(pdfRenderingExtension, outputProvider);

// Stream に変換します
var ps = outputProvider.GetPrimaryStream();
var outputStream = ps.OpenStream();

Je n’expliquerai pas en détail de quel type de traitement il s’agit car c’est écrit dans les commentaires du code. La clé consiste à spécifier l’emplacement du fichier de rapport sur la première ligne. Le format est le suivant <アセンブリ名>.<レポートファイルのパス> , et tous les séparateurs de chemin sont des points.

Le dernier est Stream, veuillez donc le convertir en PDF en fonction du contenu de traitement.

Par exemple, si vous souhaitez l’enregistrer en tant que fichier local, ajoutez ce qui suit.

// ファイルにストリームを書き出します
using var fs = new FileStream("Output.pdf", FileMode.Create);
outputStream.CopyTo(fs);

Si vous souhaitez le télécharger avec ASP.NET, ajoutez ce qui suit.

return File(outputStream, "application/pdf", "Output.pdf");

Essayez d’ouvrir le fichier PDF de sortie pour voir s’il est correct.

Sortie d’un PDF à l’aide de filtres d’exportation (rapports de section)

Utilisez le filtre d’exportation PDF disponible pour les rapports de section.

Il est créé dans un projet console de la même manière que pour les rapports de page. Le code et les paramètres que vous créez ici peuvent être appliqués à d’autres projets.

Une fois que vous avez créé le projet, ajoutez les packages requis. Cette fois-ci, nous allons sortir avec un filtre d’exportation, nous n’en ajouterons donc qu’un.

  • GrapeCity.ActiveReports.Export.Pdf (16.4.0)

Ajoutez un fichier de rapport à votre projet. L’emplacement peut être n’importe Reports où, mais cette fois-ci, je crée un dossier et je le mets là-dedans. Cet emplacement de placement affecte le chemin que vous spécifiez ultérieurement.

Ensuite, ouvrez les propriétés du rapport que vous avez ajouté.

Définissez l’action de génération sur Ressource incorporée. Cela signifie l’incorporation de la ressource à l’intérieur d’un EXE (DLL). Le rapport est chargé de manière unique sur le bureau comme sur le Web.

Ensuite, écrivez le code pour charger le rapport et imprimez-le au format PDF. Puisqu’il s’agit d’une application console, elle doit être décrite dans Programme.cs telle quelle, mais s’il s’agit d’un bureau, elle doit être décrite dans un événement de bouton, etc., et si elle est ASP.NET, elle doit être décrite à l’endroit où elle est traitée lorsqu’elle est publiée.

// レポートファイルがあるパス
var reportPath = "ConsoleApp1.Reports.Invoice.rpx";

// 埋め込みリソースを Stream をして取り出す
var stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(reportPath);
if (stream == null) return;

// Stream を XML として読み込めるようにします
var xr = System.Xml.XmlReader.Create(stream);

// セクションレポートとして読み込みます
var sectionReport = new GrapeCity.ActiveReports.SectionReport();
sectionReport.LoadLayout(xr);
sectionReport.Run();

// PDF のエクスポートフィルターを作成します
var pdfExport = new GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport();

// メモリストリームに PDF の情報を書き出します
var outputStream = new System.IO.MemoryStream();
pdfExport.Export(sectionReport.Document, outputStream);
outputStream.Seek(0, SeekOrigin.Begin);

Je n’expliquerai pas en détail de quel type de traitement il s’agit car c’est écrit dans les commentaires du code. La clé consiste à spécifier l’emplacement du fichier de rapport sur la première ligne. Le format est le suivant <アセンブリ名>.<レポートファイルのパス> , et tous les séparateurs de chemin sont des points.

Le dernier est Stream, veuillez donc le convertir en PDF en fonction du contenu de traitement.

Par exemple, si vous souhaitez l’enregistrer en tant que fichier local, ajoutez ce qui suit.

// ファイルにストリームを書き出します
using var fs = new FileStream("Output.pdf", FileMode.Create);
outputStream.CopyTo(fs);

Si vous souhaitez le télécharger avec ASP.NET, ajoutez ce qui suit.

return File(outputStream, "application/pdf", "Output.pdf");

Essayez d’ouvrir le fichier PDF de sortie pour voir s’il est correct.