Výstup zostavy ActiveReports ako súboru PDF

Stránka aktualizovaná :
Dátum vytvorenia strany :

Prevádzkové prostredie

Windows
  • Windows 10 Pro 22H2
Vizuálne štúdio
  • Komunitné vydanie Visual Studio 2022
ActiveReports pre rozhranie .NET
  • ActiveReports pre rozhranie .NET 16.0J

Predpoklady

Windows
  • Windows 8.1
  • Windows 10
  • Windows 11
  • Windows Server 2012
  • Windows Server 2012 R2
  • Windows Server 2016
  • Windows Server 2019
  • Windows Server 2022
Vizuálne štúdio
  • Visual Studio 2017
  • Visual Studio 2019
  • Visual Studio 2022
.NET Framework
  • NET Framework 4.6.2
  • NET Framework 4.7
  • NET Framework 4.8
.SIEŤ
  • .NET jadro 3.1
  • .NET 5
  • .NET 6
ActiveReports pre rozhranie .NET
  • ActiveReports pre rozhranie .NET 16.0J

Ako výstup do súboru PDF

Ak chce používateľ zostavu ako súbor PDF, najrýchlejší spôsob, ako ju poskytnúť, je zobrazenie zostavy v zobrazovači. Okrem zobrazenia zostáv má prehliadač funkciu na tlač a výstup súborov, ako je PDF, takže ak zobrazíte prehliadač, môžete požiadať používateľa o výstup súboru PDF.

V niektorých prípadoch však možno nebudete chcieť obťažovať používateľa alebo budete chcieť systematicky riadiť súbor PDF. Táto časť popisuje, ako programovo výstup súboru PDF priamo zo správy.

Metódy a obmedzenia výstupu súborov PDF

Existuje niekoľko spôsobov, ako programovo vyvýstupovať súbory PDF, ale nie všetky sú prijateľné. To sa líši v závislosti od verzie služby ActiveReports, platformy, rámca a typu zostavy, ktorú vykonáva. Napríklad v programe ActiveReports 16 sú zostavy sekcií a strán programovo výstupné odlišne. Príklad toho možno nájsť aj na oficiálnej stránke.

Z tohto dôvodu je tu niekoľko príkladov programového výstupu PDF, ktorý môžete použiť ako referenciu na nájdenie výstupu, ktorý vyhovuje vášmu projektu.

Informácie o vzorovej zostave

Súbor správy zahrnutý v šablóne pre nový projekt je prázdny, takže použijeme oficiálnu vzorovú správu. Tu je niekoľko návrhov, preto si ich stiahnite z jednej z nasledujúcich lokalít.

V tomto prípade použijeme nasledujúcu vzorovú správu.

  • Správa o stránke: Estimate_page_ipa.rdlx
  • Správa sekcie: Invoice.rpx (súčasť vzorového projektu WebSample16)

Vykresľovanie a generovanie dokumentov PDF (Page Reports/RDL Reports)

Existuje "filter exportu" na výstup súborov PDF, ale vo verzii 16 sa dá použiť iba na správy o sekciách.

Preto je potrebné vygenerovať prehľady stránok / prehľady RDL pomocou "rozšírenia kreslenia", ako je popísané na vyššie uvedenej stránke.

V prvom rade vytvorím projekt, ale tentoraz ho urobím pomocou jednoduchej konzolovej aplikácie. Je rovnako jednoduché aplikovať na desktopové a webové verzie ako na webovú verziu.

Pri vytváraní projektu vyberte položku Console App (Aplikácia pre konzolu).

Po vytvorení projektu pridajte požadované balíky.

Čo pridáte: Nezískajte najnovšiu verziu, ale použite verziu popísanú nižšie. Zdá sa, že niektoré kombinácie balíkov nefungujú správne s najnovšou verziou. Zobrazí sa výstražný znak, ale ignorujte ho, pretože závislosti sa nezhodujú. Existuje však možnosť, že sa v budúcnosti zmení s aktualizáciami verzií, preto ho zakaždým upravte. GrapeCity.Documents.Imaging GrapeCity.Documents.Pdf a vyžadujú sa na vykreslenie do PDF.

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

Pridajte do projektu súbor zostavy. Umiestnenie môže byť kdekoľvek, ale tentoraz vytváram priečinok a vkladám Reports ho tam. Toto umiestnenie umiestnenia ovplyvňuje cestu, ktorú zadáte neskôr.

Potom otvorte vlastnosti zostavy, ktorú ste pridali.

Nastavte akciu zostavenia na možnosť Vložený zdroj. To znamená vloženie prostriedku do súboru EXE (DLL). Zostava sa jedinečne načíta na pracovnej ploche rovnako ako na webe.

Potom napíšte kód na načítanie správy a vytlačte ju do formátu PDF. Keďže ide o konzolovú aplikáciu, mala by byť popísaná v programe tak.cs ako je, ale ak ide o pracovnú plochu, mala by byť popísaná v udalosti tlačidla atď., A ak je ASP.NET, mala by byť popísaná na mieste, kde je spracovaná, keď je zverejnená.

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

Nebudem podrobne vysvetľovať, o aký druh spracovania ide, pretože je to napísané v komentároch kódu. Kľúčom je určiť umiestnenie súboru správy v prvom riadku. Formát je nasledovný <アセンブリ名>.<レポートファイルのパス> a všetky oddeľovače ciest sú bodky.

Posledným je Stream, preto ho prosím preveďte do PDF podľa obsahu spracovania.

Ak ho chcete napríklad uložiť ako lokálny súbor, pridajte nasledujúce.

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

Ak si ho chcete stiahnuť pomocou ASP.NET, pridajte nasledujúce.

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

Skúste otvoriť výstupný súbor PDF a zistite, či je v poriadku.

Výstup PDF pomocou exportných filtrov (výkazy sekcií)

Použite filter exportu PDF, ktorý je k dispozícii pre zostavy sekcií.

Vytvára sa v konzolovom projekte rovnakým spôsobom ako pri stránkových zostavách. Kód a nastavenia, ktoré tu vytvoríte, môžete použiť na iné projekty.

Po vytvorení projektu pridajte požadované balíky. Tentokrát budeme výstupovať s exportným filtrom, takže pridáme iba jeden.

  • GrapeCity.ActiveReports.Export.Pdf (16.4.0)

Pridajte do projektu súbor zostavy. Umiestnenie môže byť kdekoľvek, ale tentoraz vytváram priečinok a vkladám Reports ho tam. Toto umiestnenie umiestnenia ovplyvňuje cestu, ktorú zadáte neskôr.

Potom otvorte vlastnosti zostavy, ktorú ste pridali.

Nastavte akciu zostavenia na možnosť Vložený zdroj. To znamená vloženie prostriedku do súboru EXE (DLL). Zostava sa jedinečne načíta na pracovnej ploche rovnako ako na webe.

Potom napíšte kód na načítanie správy a vytlačte ju do formátu PDF. Keďže ide o konzolovú aplikáciu, mala by byť popísaná v programe tak.cs ako je, ale ak ide o pracovnú plochu, mala by byť popísaná v udalosti tlačidla atď., A ak je ASP.NET, mala by byť popísaná na mieste, kde je spracovaná, keď je zverejnená.

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

Nebudem podrobne vysvetľovať, o aký druh spracovania ide, pretože je to napísané v komentároch kódu. Kľúčom je určiť umiestnenie súboru správy v prvom riadku. Formát je nasledovný <アセンブリ名>.<レポートファイルのパス> a všetky oddeľovače ciest sú bodky.

Posledným je Stream, preto ho prosím preveďte do PDF podľa obsahu spracovania.

Ak ho chcete napríklad uložiť ako lokálny súbor, pridajte nasledujúce.

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

Ak si ho chcete stiahnuť pomocou ASP.NET, pridajte nasledujúce.

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

Skúste otvoriť výstupný súbor PDF a zistite, či je v poriadku.