Een ActiveReports-rapport uitvoeren als PDF-bestand

Pagina bijgewerkt :
Aanmaakdatum van pagina :

Werkomgeving

Ramen
  • Windows 10 Pro 22H2
Visual Studio
  • Visual Studio 2022 Community-editie
ActiveReports voor .NET
  • ActiveReports voor .NET 16.0J

Voorwaarden

Ramen
  • Windows 8.1
  • Vensters 10
  • Vensters 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-kader 4.6.2
  • NET-raamwerk 4.7
  • NET-raamwerk 4.8
.NET
  • .NET Core 3.1
  • .NET 5
  • .NET 6
ActiveReports voor .NET
  • ActiveReports voor .NET 16.0J

Hoe uit te voeren naar een PDF-bestand

Als een gebruiker een rapport als PDF-bestand wil, is de snelste manier om dit aan te bieden het rapport in de viewer te laten bekijken. Naast het weergeven van rapporten, heeft de viewer een functie om bestanden zoals PDF af te drukken en uit te voeren, dus als u de viewer weergeeft, kunt u de gebruiker vragen om het PDF-bestand uit te voeren.

In sommige gevallen wilt u de gebruiker echter niet lastig vallen, of wilt u het PDF-bestand systematisch sturen. In deze sectie wordt beschreven hoe u een PDF-bestand programmatisch rechtstreeks vanuit een rapport kunt uitvoeren.

Uitvoermethoden en beperkingen voor PDF-bestanden

Er zijn verschillende manieren om PDF-bestanden programmatisch uit te voeren, maar ze zijn niet allemaal acceptabel. Dit varieert afhankelijk van de versie van ActiveReports, het platform, het framework en het type rapport dat het uitvoert. In ActiveReports 16 worden sectie- en paginarapporten bijvoorbeeld programmatisch anders uitgevoerd. Een voorbeeld hiervan is ook te vinden op de officiële pagina.

Om deze reden volgen hier enkele voorbeelden van programmatische PDF-uitvoer die u als referentie kunt gebruiken om degene te vinden die bij uw project past.

Over het voorbeeldrapport

Het rapportbestand dat is opgenomen in het sjabloon voor het nieuwe project is leeg, dus we gebruiken het officiële voorbeeldrapport. Hier zijn enkele suggesties, dus download ze van een van de volgende sites.

In dit geval gebruiken we het volgende voorbeeldrapport.

  • Pagina Rapport : Estimate_page_ipa.rdlx
  • Sectierapport: Invoice.rpx (opgenomen in het WebSample16-voorbeeldproject)

PDF's renderen en genereren (paginarapporten/RDL-rapporten)

Er is een "exportfilter" voor het uitvoeren van PDF's, maar in versie 16 kan dit alleen worden gebruikt voor sectierapporten.

Daarom moeten paginarapporten/RDL-rapporten worden gegenereerd met de "Tekenextensie" zoals beschreven op de bovenstaande pagina.

Allereerst zal ik een project maken, maar deze keer zal ik het maken met een eenvoudige console-applicatie. Het is net zo eenvoudig toe te passen op de desktop- en webversie als op de webversie.

Wanneer u een project maakt, selecteert u Console-app.

Nadat u het project hebt gemaakt, voegt u de vereiste pakketten toe.

Dit is wat je gaat toevoegen: Download niet de nieuwste versie, maar gebruik de hieronder beschreven versie. Het lijkt erop dat sommige pakketcombinaties niet goed werken met de nieuwste versie. Er wordt een waarschuwingsteken weergegeven, maar negeer dit omdat de afhankelijkheden niet overeenkomen. Er is echter een mogelijkheid dat het in de toekomst zal veranderen met versie-upgrades, dus pas het elke keer aan. GrapeCity.Documents.Imaging GrapeCity.Documents.Pdf en moeten worden weergegeven in PDF.

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

Voeg een rapportbestand toe aan uw project. De locatie kan overal zijn, maar deze keer maak Reports ik een map aan en plaats die daarin. Deze plaatsingslocatie is van invloed op het pad dat u later opgeeft.

Open vervolgens de eigenschappen van het rapport dat u hebt toegevoegd.

Stel de animatieactie in op Ingesloten resource. Dit betekent dat de bron moet worden ingesloten in een EXE (DLL). Het rapport wordt op dezelfde manier op het bureaublad geladen als op het web.

Schrijf vervolgens de code om het rapport te laden en druk het af als PDF. Omdat het een consoletoepassing is, moet het worden beschreven in Programma.cs zoals het is, maar als het een desktop is, moet het worden beschreven in een knopgebeurtenis, enz., en als het ASP.NET is, moet het worden beschreven op de plaats waar het wordt verwerkt wanneer het wordt gepost.

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

Ik zal niet in detail uitleggen wat voor soort verwerking het is, omdat het in de commentaren van de code staat. De sleutel is om de locatie van het rapportbestand in de eerste regel op te geven. De indeling is als <アセンブリ名>.<レポートファイルのパス> volgt en alle padscheidingstekens zijn punten.

De laatste is Stream, dus converteer deze naar PDF op basis van de verwerkingsinhoud.

Als u het bijvoorbeeld als een lokaal bestand wilt opslaan, voegt u het volgende toe.

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

Als u het met ASP.NET wilt downloaden, voegt u het volgende toe.

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

Probeer het PDF-uitvoerbestand te openen om te zien of het in orde is.

PDF uitvoeren met behulp van exportfilters (sectierapporten)

Gebruik het PDF-exportfilter dat beschikbaar is voor sectierapporten.

Het wordt op dezelfde manier gemaakt in een consoleproject als voor paginarapporten. De code en instellingen die u hier maakt, kunnen worden toegepast op andere projecten.

Nadat u het project hebt gemaakt, voegt u de vereiste pakketten toe. Deze keer voeren we uit met een exportfilter, dus we voegen er maar één toe.

  • GrapeCity.ActiveReports.Export.Pdf (16.4.0)

Voeg een rapportbestand toe aan uw project. De locatie kan overal zijn, maar deze keer maak Reports ik een map aan en plaats die daarin. Deze plaatsingslocatie is van invloed op het pad dat u later opgeeft.

Open vervolgens de eigenschappen van het rapport dat u hebt toegevoegd.

Stel de animatieactie in op Ingesloten resource. Dit betekent dat de bron moet worden ingesloten in een EXE (DLL). Het rapport wordt op dezelfde manier op het bureaublad geladen als op het web.

Schrijf vervolgens de code om het rapport te laden en druk het af als PDF. Omdat het een consoletoepassing is, moet het worden beschreven in Programma.cs zoals het is, maar als het een desktop is, moet het worden beschreven in een knopgebeurtenis, enz., en als het ASP.NET is, moet het worden beschreven op de plaats waar het wordt verwerkt wanneer het wordt gepost.

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

Ik zal niet in detail uitleggen wat voor soort verwerking het is, omdat het in de commentaren van de code staat. De sleutel is om de locatie van het rapportbestand in de eerste regel op te geven. De indeling is als <アセンブリ名>.<レポートファイルのパス> volgt en alle padscheidingstekens zijn punten.

De laatste is Stream, dus converteer deze naar PDF op basis van de verwerkingsinhoud.

Als u het bijvoorbeeld als een lokaal bestand wilt opslaan, voegt u het volgende toe.

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

Als u het met ASP.NET wilt downloaden, voegt u het volgende toe.

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

Probeer het PDF-uitvoerbestand te openen om te zien of het in orde is.