Ausgabe eines ActiveReports-Berichts als PDF-Datei

Diese Seite wurde aktualisiert :
Erstellungsdatum der Seite :

Betriebsumgebung

Fenster
  • Windows 10 Pro 22H2
Visual Studio
  • Visual Studio 2022 Community Edition
ActiveReports für .NET
  • ActiveReports für .NET 16.0J

Voraussetzungen

Fenster
  • Windows 8.1
  • Windows 10 (Englisch)
  • Windows 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
  • NET Framework 4.7
  • NET Framework 4.8
.NETTO
  • .NET Core 3.1
  • .NET 5
  • .NET 6
ActiveReports für .NET
  • ActiveReports für .NET 16.0J

So geben Sie in eine PDF-Datei aus

Wenn ein Benutzer einen Bericht als PDF-Datei haben möchte, kann er ihn am schnellsten bereitstellen, indem er den Bericht im Viewer anzeigt. Zusätzlich zur Anzeige von Berichten verfügt der Viewer über eine Funktion zum Drucken und Ausgeben von Dateien wie z. B. PDF. Wenn Sie also den Viewer anzeigen, können Sie den Benutzer bitten, die PDF-Datei auszugeben.

In einigen Fällen möchten Sie den Benutzer jedoch möglicherweise nicht stören oder die PDF-Datei systematisch steuern. In diesem Abschnitt wird beschrieben, wie Sie eine PDF-Datei direkt aus einem Bericht programmgesteuert ausgeben.

Ausgabemethoden und Einschränkungen für PDF-Dateien

Es gibt mehrere Möglichkeiten, PDF-Dateien programmgesteuert auszugeben, aber nicht alle sind akzeptabel. Dies hängt von der Version von ActiveReports, der Plattform, dem Framework und der Art des Berichts ab, den es ausführt. In ActiveReports 16 werden z. B. Abschnitts- und Seitenberichte programmgesteuert unterschiedlich ausgegeben. Ein Beispiel dafür finden Sie auch auf der offiziellen Seite.

Aus diesem Grund finden Sie hier einige Beispiele für die programmatische PDF-Ausgabe, die Sie als Referenz verwenden können, um die für Ihr Projekt geeignete Ausgabe zu finden.

Informationen zum Beispielbericht

Die Berichtsdatei, die in der Vorlage für das neue Projekt enthalten ist, ist leer, daher verwenden wir den offiziellen Beispielbericht. Hier sind einige Vorschläge, also laden Sie sie bitte von einer der folgenden Seiten herunter.

In diesem Fall verwenden wir den folgenden Beispielbericht.

  • Seitenbericht : Estimate_page_ipa.rdlx
  • Abschnittsbericht: Invoice.rpx (im WebSample16-Beispielprojekt enthalten)

Rendern und Generieren von PDFs (Seitenberichte/RDL-Berichte)

Es gibt einen "Exportfilter" für die Ausgabe von PDFs, der aber in Version 16 nur für Abschnittsberichte verwendet werden kann.

Daher müssen Seitenberichte/RDL-Berichte mit der "Drawing Extension" erstellt werden, wie auf der obigen Seite beschrieben.

Zuerst werde ich ein Projekt erstellen, aber dieses Mal werde ich es mit einer einfachen Konsolenanwendung erstellen. Es ist genauso einfach auf die Desktop- und Web-Version anzuwenden wie auf die Web-Version.

Wenn Sie ein Projekt erstellen, wählen Sie Konsolen-App aus.

Nachdem Sie das Projekt erstellt haben, fügen Sie die erforderlichen Pakete hinzu.

Hier ist, was Sie hinzufügen werden: Bitte holen Sie sich nicht die neueste Version, sondern verwenden Sie die unten beschriebene Version. Es scheint, dass einige Paketkombinationen mit der neuesten Version nicht richtig funktionieren. Ein Warnzeichen wird angezeigt, aber ignorieren Sie es, da die Abhängigkeiten nicht übereinstimmen. Es besteht jedoch die Möglichkeit, dass es sich in Zukunft mit Versions-Upgrades ändert, also passen Sie es bitte jedes Mal an. GrapeCity.Documents.Imaging GrapeCity.Documents.Pdf und müssen als PDF gerendert werden.

  • GrapeCity.ActiveReports.Export.Pdf (16.4.0)
  • GrapeCity.Documents.Imaging (6.0.3)
  • GrapeCity.Dokumente.Pdf (6.0.3)

Fügen Sie Ihrem Projekt eine Berichtsdatei hinzu. Der Speicherort kann überall sein, aber dieses Mal erstelle ich Reports einen Ordner und lege ihn dort ab. Diese Platzierungsposition wirkt sich auf den Pfad aus, den Sie später angeben.

Öffnen Sie als Nächstes die Eigenschaften des Berichts, den Sie hinzugefügt haben.

Legen Sie den Buildvorgang auf Eingebettete Ressource fest. Dies bedeutet, dass die Ressource in eine EXE-Datei (DLL) eingebettet werden muss. Der Bericht wird auf dem Desktop wie im Web eindeutig geladen.

Schreiben Sie als Nächstes den Code zum Laden des Berichts und drucken Sie ihn als PDF. Da es sich um eine Konsolenanwendung handelt, sollte sie in Programm.cs wie sie ist, beschrieben werden, aber wenn es sich um einen Desktop handelt, sollte sie in einem Schaltflächenereignis usw. beschrieben werden, und wenn sie ASP.NET ist, sollte sie an der Stelle beschrieben werden, an der sie verarbeitet wird, wenn sie veröffentlicht wird.

// レポートファイルがあるパス
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();

Ich werde nicht im Detail erklären, um welche Art von Verarbeitung es sich handelt, da es in den Kommentaren des Codes steht. Der Schlüssel besteht darin, den Speicherort der Berichtsdatei in der ersten Zeile anzugeben. Das Format lautet wie <アセンブリ名>.<レポートファイルのパス> folgt, und alle Pfadtrennzeichen sind Punkte.

Die letzte ist Stream, also konvertieren Sie sie bitte entsprechend dem Verarbeitungsinhalt in PDF.

Wenn Sie sie z. B. als lokale Datei speichern möchten, fügen Sie Folgendes hinzu.

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

Wenn Sie es mit ASP.NET herunterladen möchten, fügen Sie Folgendes hinzu.

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

Versuchen Sie, die PDF-Ausgabedatei zu öffnen, um zu sehen, ob sie in Ordnung ist.

PDF-Ausgabe mit Exportfiltern (Abschnittsberichte)

Verwenden Sie den PDF-Exportfilter, der für Abschnittsberichte verfügbar ist.

Sie wird in einem Konsolenprojekt auf die gleiche Weise wie für Seitenberichte erstellt. Der Code und die Einstellungen, die Sie hier erstellen, können auf andere Projekte angewendet werden.

Nachdem Sie das Projekt erstellt haben, fügen Sie die erforderlichen Pakete hinzu. Dieses Mal werden wir mit einem Exportfilter ausgeben, also fügen wir nur einen hinzu.

  • GrapeCity.ActiveReports.Export.Pdf (16.4.0)

Fügen Sie Ihrem Projekt eine Berichtsdatei hinzu. Der Speicherort kann überall sein, aber dieses Mal erstelle ich Reports einen Ordner und lege ihn dort ab. Diese Platzierungsposition wirkt sich auf den Pfad aus, den Sie später angeben.

Öffnen Sie als Nächstes die Eigenschaften des Berichts, den Sie hinzugefügt haben.

Legen Sie den Buildvorgang auf Eingebettete Ressource fest. Dies bedeutet, dass die Ressource in eine EXE-Datei (DLL) eingebettet werden muss. Der Bericht wird auf dem Desktop wie im Web eindeutig geladen.

Schreiben Sie als Nächstes den Code zum Laden des Berichts und drucken Sie ihn als PDF. Da es sich um eine Konsolenanwendung handelt, sollte sie in Programm.cs wie sie ist, beschrieben werden, aber wenn es sich um einen Desktop handelt, sollte sie in einem Schaltflächenereignis usw. beschrieben werden, und wenn sie ASP.NET ist, sollte sie an der Stelle beschrieben werden, an der sie verarbeitet wird, wenn sie veröffentlicht wird.

// レポートファイルがあるパス
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);

Ich werde nicht im Detail erklären, um welche Art von Verarbeitung es sich handelt, da es in den Kommentaren des Codes steht. Der Schlüssel besteht darin, den Speicherort der Berichtsdatei in der ersten Zeile anzugeben. Das Format lautet wie <アセンブリ名>.<レポートファイルのパス> folgt, und alle Pfadtrennzeichen sind Punkte.

Die letzte ist Stream, also konvertieren Sie sie bitte entsprechend dem Verarbeitungsinhalt in PDF.

Wenn Sie sie z. B. als lokale Datei speichern möchten, fügen Sie Folgendes hinzu.

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

Wenn Sie es mit ASP.NET herunterladen möchten, fügen Sie Folgendes hinzu.

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

Versuchen Sie, die PDF-Ausgabedatei zu öffnen, um zu sehen, ob sie in Ordnung ist.