Ustvarjanje poročila ActiveReports v obliki datoteke PDF

Stran posodobljena :
Datum ustvarjanja strani :

Delovno okolje

Windows
  • Windows 10 Pro 22H2
Visual Studio
  • Visual Studio 2022 Community Edition
ActiveReports za .NET
  • ActiveReports za .NET 16.0J

Predpogoji

Windows
  • Windows 8.1
  • Windows 10
  • 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
.MREŽA
  • .NET Core 3.1
  • .NET 5
  • .NET 6
ActiveReports za .NET
  • ActiveReports za .NET 16.0J

Kako izpisati v datoteko PDF

Če uporabnik želi poročilo kot datoteko PDF, ga najhitreje posreduje tako, da si poročilo ogleda v pregledovalniku. Poleg prikaza poročil ima pregledovalnik funkcijo tiskanja in izpisovanja datotek, kot je PDF, tako da, če prikažete pregledovalnik, lahko uporabnika prosite, naj izpiše datoteko PDF.

Vendar v nekaterih primerih morda ne boste želeli motiti uporabnika ali pa boste morda želeli sistematično usmerjati datoteko PDF. V tem razdelku je opisano, kako programsko izpišete datoteko PDF neposredno iz poročila.

Izhodne metode in omejitve datotek PDF

Obstaja več načinov za programsko tiskanje datotek PDF, vendar niso vsi sprejemljivi. To je odvisno od različice ActiveReports, platforme, ogrodja in vrste poročila, ki ga izvaja. V ActiveReports 16 so na primer poročila o odsekih in straneh natisnjena drugače programsko. Primer tega najdete tudi na uradni strani.

Zato je tukaj nekaj primerov programatičnega izhoda PDF, ki jih lahko uporabite kot referenco za iskanje tistega, ki ustreza vašemu projektu.

O vzorčnem poročilu

Datoteka poročila, ki je vključena v predlogo za nov projekt, je prazna, zato bomo uporabili uradno vzorčno poročilo. Tukaj je nekaj predlogov, zato jih prenesite z enega od naslednjih spletnih mest.

V tem primeru bomo uporabili naslednje vzorčno poročilo.

  • Poročilo o strani: Estimate_page_ipa.rdlx
  • Poročilo razdelka: Invoice.rpx (vključeno v vzorčni projekt WebSample16)

Upodabljanje in ustvarjanje dokumentov PDF (poročila strani/poročila RDL)

Obstaja "izvozni filter" za izhodne PDF-je, v različici 16 pa se lahko uporablja samo za poročila odsekov.

Zato je treba poročila o straneh / poročila RDL ustvariti z "razširitvijo risbe", kot je opisano na zgornji strani.

Najprej bom ustvaril projekt, tokrat pa ga bom naredil s preprosto konzolno aplikacijo. Enako enostavno ga je uporabiti za namizne in spletne različice kot za spletno različico.

Ko ustvarite projekt, izberite Konzolna aplikacija.

Ko ustvarite projekt, dodajte zahtevane pakete.

Dodali boste to: Prosimo, ne dobite najnovejše različice, ampak uporabite spodaj opisano različico. Zdi se, da nekatere kombinacije paketov ne delujejo pravilno z najnovejšo različico. Prikaže se opozorilo, vendar ga prezrite, ker se odvisnosti ne ujemajo. Vendar pa obstaja možnost, da se bo v prihodnosti spremenil z nadgradnjami različic, zato ga vsakič prilagodite. GrapeCity.Documents.Imaging GrapeCity.Documents.Pdf in so potrebni za upodabljanje v PDF.

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

Dodajte datoteko poročila v projekt. Lokacija je lahko kjerkoli, tokrat pa ustvarjam Reports mapo in jo vstavim vanjo. To mesto umestitve vpliva na pot, ki jo določite pozneje.

Nato odprite lastnosti poročila, ki ste ga dodali.

Dejanje gradnje nastavite na Vdelani vir. To pomeni vdelavo vira v EXE (DLL). Poročilo je enolično naloženo na namizje, kot je v spletu.

Nato napišite kodo, da naložite poročilo in ga natisnete v PDF. Ker gre za konzolno aplikacijo, jo je treba opisati v programu.cs kot je, če pa gre za namizje, jo je treba opisati v dogodku gumba itd., Če pa je ASP.NET, jo je treba opisati na mestu, kjer se obdeluje, ko je objavljena.

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

Ne bom podrobno razložil, za kakšno obdelavo gre, ker je zapisana v komentarjih kode. Ključno je, da v prvi vrstici določite lokacijo datoteke poročila. Oblika je naslednja <アセンブリ名>.<レポートファイルのパス> , vsa ločila poti pa so obdobja.

Zadnji je Stream, zato ga pretvorite v PDF glede na vsebino obdelave.

Če jo želite na primer shraniti kot lokalno datoteko, dodajte to.

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

Če ga želite prenesti s ASP.NET, dodajte naslednje.

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

Poskusite odpreti izhodno datoteko PDF in preverite, ali je v redu.

Izhod PDF s filtri za izvoz (poročila odsekov)

Uporabite filter za izvoz PDF, ki je na voljo za poročila odsekov.

V konzolnem projektu se ustvari na enak način kot za poročila o straneh. Kodo in nastavitve, ki jih ustvarite tukaj, lahko uporabite za druge projekte.

Ko ustvarite projekt, dodajte zahtevane pakete. Tokrat bomo izpisali z izvoznim filtrom, zato bomo dodali samo enega.

  • GrapeCity.ActiveReports.Export.Pdf (16.4.0)

Dodajte datoteko poročila v projekt. Lokacija je lahko kjerkoli, tokrat pa ustvarjam Reports mapo in jo vstavim vanjo. To mesto umestitve vpliva na pot, ki jo določite pozneje.

Nato odprite lastnosti poročila, ki ste ga dodali.

Dejanje gradnje nastavite na Vdelani vir. To pomeni vdelavo vira v EXE (DLL). Poročilo je enolično naloženo na namizje, kot je v spletu.

Nato napišite kodo, da naložite poročilo in ga natisnete v PDF. Ker gre za konzolno aplikacijo, jo je treba opisati v programu.cs kot je, če pa gre za namizje, jo je treba opisati v dogodku gumba itd., Če pa je ASP.NET, jo je treba opisati na mestu, kjer se obdeluje, ko je objavljena.

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

Ne bom podrobno razložil, za kakšno obdelavo gre, ker je zapisana v komentarjih kode. Ključno je, da v prvi vrstici določite lokacijo datoteke poročila. Oblika je naslednja <アセンブリ名>.<レポートファイルのパス> , vsa ločila poti pa so obdobja.

Zadnji je Stream, zato ga pretvorite v PDF glede na vsebino obdelave.

Če jo želite na primer shraniti kot lokalno datoteko, dodajte to.

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

Če ga želite prenesti s ASP.NET, dodajte naslednje.

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

Poskusite odpreti izhodno datoteko PDF in preverite, ali je v redu.