Ieșirea unui raport ActiveReports ca fișier PDF

Pagina actualizată :
Data creării paginii :

Mediu de operare

Windows
  • Ferestre 10 Pro 22H2
Visual Studio
  • Visual Studio 2022 Community Edition
Rapoarte active pentru .NET
  • Rapoarte active pentru .NET 16.0J

Cerințe preliminare

Windows
  • Windows 8.1
  • Ferestre 10
  • Ferestre 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
.NET
  • .NET Core 3.1
  • .NET 5
  • .NET 6
Rapoarte active pentru .NET
  • Rapoarte active pentru .NET 16.0J

Cum se scoate într-un fișier PDF

Dacă un utilizator dorește un raport ca fișier PDF, cel mai rapid mod de a-l furniza este ca raportul să fie vizualizat în vizualizator. Pe lângă afișarea rapoartelor, vizualizatorul are o funcție de tipărire și ieșire a fișierelor, cum ar fi PDF, astfel încât, dacă afișați vizualizatorul, puteți solicita utilizatorului să afișeze fișierul PDF.

Cu toate acestea, în unele cazuri, este posibil să nu doriți să deranjați utilizatorul sau poate doriți să direcționați sistematic fișierul PDF. Această secțiune descrie modul de ieșire programatică a unui fișier PDF direct dintr-un raport.

Metode și limitări de ieșire a fișierelor PDF

Există mai multe moduri de a afișa programatic fișiere PDF, dar nu toate sunt acceptabile. Acest lucru variază în funcție de versiunea ActiveReports, de platformă, de cadru și de tipul de raport pe care îl efectuează. De exemplu, în ActiveReports 16, rapoartele de secțiune și pagină sunt afișate diferit programatic. Un exemplu în acest sens poate fi găsit și pe pagina oficială.

Din acest motiv, iată câteva exemple de ieșire PDF programatică pe care le puteți utiliza ca referință pentru a o găsi pe cea care se potrivește proiectului dvs.

Despre exemplul de raport

Fișierul de raport inclus în șablonul pentru noul proiect este gol, așa că vom folosi exemplul oficial de raport. Iată câteva sugestii, așa că vă rugăm să le descărcați de pe unul dintre următoarele site-uri.

În acest caz, vom folosi următorul exemplu de raport.

  • Raport pagină : Estimate_page_ipa.rdlx
  • Raport secțiune: Invoice.rpx (inclus în proiectul eșantion WebSample16)

Randarea și generarea PDF-urilor (Rapoarte pagină/Rapoarte RDL)

Există un "filtru de export" pentru ieșirea PDF-urilor, dar în versiunea 16 acesta poate fi utilizat numai pentru rapoartele secțiunilor.

Prin urmare, rapoartele de pagină / rapoartele RDL trebuie generate cu "Extensia desenului" așa cum este descris pe pagina de mai sus.

În primul rând, voi crea un proiect, dar de data aceasta îl voi face cu o aplicație simplă de consolă. Este la fel de ușor de aplicat versiunilor desktop și web ca și versiunii web.

Când creați un proiect, selectați Consolă aplicație.

După ce creați proiectul, adăugați pachetele necesare.

Iată ce veți adăuga: Vă rugăm să nu obțineți cea mai recentă versiune, dar utilizați versiunea descrisă mai jos. Se pare că unele combinații de pachete nu funcționează corect cu cea mai recentă versiune. Se afișează un semn de avertizare, dar ignorați-l, deoarece dependențele nu se potrivesc. Cu toate acestea, există posibilitatea ca acesta să se schimbe odată cu actualizările versiunii în viitor, așa că vă rugăm să îl ajustați de fiecare dată. GrapeCity.Documents.Imaging GrapeCity.Documents.Pdf și sunt necesare pentru a reda în PDF.

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

Adăugați un fișier raport la proiectul dvs. Locația poate fi oriunde, dar de data aceasta creez Reports un folder și îl pun acolo. Această locație a destinației de plasare afectează calea specificată ulterior.

Apoi, deschideți proprietățile raportului pe care l-ați adăugat.

Setați acțiunea de compilare la Resursă încorporată. Aceasta înseamnă încorporarea resursei într-un EXE (DLL). Raportul este încărcat în mod unic pe desktop, așa cum este pe web.

Apoi, scrieți codul pentru a încărca raportul și imprimați-l în PDF. Deoarece este o aplicație consolă, ar trebui descrisă în Program.cs așa cum este, dar dacă este un desktop, ar trebui descrisă într-un eveniment buton etc., iar dacă este ASP.NET, ar trebui descrisă în locul în care este procesată atunci când este postată.

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

Nu voi explica în detaliu ce fel de procesare este, deoarece este scris în comentariile codului. Cheia este să specificați locația fișierului de raport în prima linie. Formatul este următorul <アセンブリ名>.<レポートファイルのパス> , iar toate separatoarele de traseu sunt puncte.

Ultimul este Stream, așa că vă rugăm să îl convertiți în PDF în funcție de conținutul de procesare.

De exemplu, dacă doriți să îl salvați ca fișier local, adăugați următoarele.

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

Dacă doriți să îl descărcați cu ASP.NET, adăugați următoarele.

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

Încercați să deschideți fișierul PDF de ieșire pentru a vedea dacă este în regulă.

PDF de ieșire utilizând filtre de export (rapoarte de secțiune)

Utilizați filtrul de export PDF disponibil pentru rapoartele secțiunilor.

Este creat într-un proiect consolă în același mod ca și pentru rapoartele de pagină. Codul și setările pe care le creați aici pot fi aplicate altor proiecte.

După ce creați proiectul, adăugați pachetele necesare. De data aceasta, vom ieși cu un filtru de export, așa că vom adăuga doar unul.

  • GrapeCity.ActiveReports.Export.Pdf (16.4.0)

Adăugați un fișier raport la proiectul dvs. Locația poate fi oriunde, dar de data aceasta creez Reports un folder și îl pun acolo. Această locație a destinației de plasare afectează calea specificată ulterior.

Apoi, deschideți proprietățile raportului pe care l-ați adăugat.

Setați acțiunea de compilare la Resursă încorporată. Aceasta înseamnă încorporarea resursei într-un EXE (DLL). Raportul este încărcat în mod unic pe desktop, așa cum este pe web.

Apoi, scrieți codul pentru a încărca raportul și imprimați-l în PDF. Deoarece este o aplicație consolă, ar trebui descrisă în Program.cs așa cum este, dar dacă este un desktop, ar trebui descrisă într-un eveniment buton etc., iar dacă este ASP.NET, ar trebui descrisă în locul în care este procesată atunci când este postată.

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

Nu voi explica în detaliu ce fel de procesare este, deoarece este scris în comentariile codului. Cheia este să specificați locația fișierului de raport în prima linie. Formatul este următorul <アセンブリ名>.<レポートファイルのパス> , iar toate separatoarele de traseu sunt puncte.

Ultimul este Stream, așa că vă rugăm să îl convertiți în PDF în funcție de conținutul de procesare.

De exemplu, dacă doriți să îl salvați ca fișier local, adăugați următoarele.

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

Dacă doriți să îl descărcați cu ASP.NET, adăugați următoarele.

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

Încercați să deschideți fișierul PDF de ieșire pentru a vedea dacă este în regulă.