ActiveReports-raportin tulostaminen PDF-tiedostona

Sivu päivitetty :
Sivun luontipäivämäärä :

Toimintaympäristö

Windows
  • Windows 10 Pro 22H2
Visuaalinen studio
  • Visual Studio 2022 Community Edition
ActiveReports verkkotunnukselle .NET
  • ActiveReports .NET 16.0J:lle

Edellytykset

Windows
  • Windows 8.1
  • Windows 10
  • Windows 11
  • Windows Server 2012
  • Windows Server 2012 R2
  • Windows Server 2016
  • Windows Server 2019
  • Windows Server 2022
Visuaalinen studio
  • Visual Studio 2017
  • Visual Studio 2019
  • Visuaalinen studio 2022
.NET Framework
  • NET Framework 4.6.2
  • NET Framework 4.7
  • NET Framework 4.8
.VERKKO
  • .NET Core 3.1
  • .NET 5
  • .NET 6
ActiveReports verkkotunnukselle .NET
  • ActiveReports .NET 16.0J:lle

Kuinka tulostaa PDF-tiedostoon

Jos käyttäjä haluaa raportin PDF-tiedostona, nopein tapa toimittaa se on tarkastella raporttia katseluohjelmassa. Raporttien näyttämisen lisäksi katseluohjelmalla on toiminto tulostaa ja tulostaa tiedostoja, kuten PDF-tiedostoja, joten jos näytät katseluohjelman, voit pyytää käyttäjää tulostamaan PDF-tiedoston.

Joissakin tapauksissa et kuitenkaan ehkä halua häiritä käyttäjää tai haluat ehkä ohjata PDF-tiedostoa järjestelmällisesti. Tässä osassa kuvataan, miten PDF-tiedosto tulostetaan ohjelmallisesti suoraan raportista.

PDF-tiedostojen tulostusmenetelmät ja rajoitukset

PDF-tiedostojen ohjelmalliseen tulostamiseen on useita tapoja, mutta kaikki eivät ole hyväksyttäviä. Tämä vaihtelee ActiveReports-version, alustan, kehyksen ja suoritettavan raportin tyypin mukaan. Esimerkiksi ActiveReports 16:ssa osa- ja sivuraportit tulostetaan eri tavalla ohjelmallisesti. Esimerkki tästä löytyy myös viralliselta sivulta.

Tästä syystä tässä on joitain esimerkkejä ohjelmallisesta PDF-tulostuksesta, jota voit käyttää viitteenä löytääksesi projektiisi sopivan.

Tietoja malliraportista

Uuden projektin malliin sisältyvä raporttitiedosto on tyhjä, joten käytämme virallista näyteraporttia. Tässä on joitain ehdotuksia, joten lataa ne joltakin seuraavista sivustoista.

Tässä tapauksessa käytämme seuraavaa esimerkkiraporttia.

  • Sivun raportti : Estimate_page_ipa.rdlx
  • Osaraportti: Invoice.rpx (sisältyy WebSample16-esimerkkiprojektiin)

PDF-tiedostojen hahmontaminen ja luominen (sivuraportit/RDL-raportit)

PDF-tiedostojen tulostamiseen on "vientisuodatin", mutta versiossa 16 sitä voidaan käyttää vain osaraportteihin.

Siksi sivuraportit/RDL-raportit on luotava "piirustuslaajennuksella" yllä olevan sivun kuvatulla tavalla.

Ensinnäkin luon projektin, mutta tällä kertaa teen sen yksinkertaisella konsolisovelluksella. Sitä on yhtä helppo soveltaa työpöytä- ja verkkoversioihin kuin verkkoversioon.

Kun luot projektin, valitse Console App (Konsolisovellus).

Kun olet luonut projektin, lisää tarvittavat paketit.

Lisäät seuraavaa: Älä hanki uusinta versiota, vaan käytä alla kuvattua versiota. Näyttää siltä, että jotkut pakettiyhdistelmät eivät toimi oikein uusimman version kanssa. Näyttöön tulee varoitusmerkki, mutta ohita se, koska riippuvuudet eivät täsmää. On kuitenkin mahdollista, että se muuttuu versiopäivitysten myötä tulevaisuudessa, joten säädä sitä joka kerta. GrapeCity.Documents.Imaging GrapeCity.Documents.Pdf ja ne on hahmonnettava PDF-muotoon.

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

Lisää raporttitiedosto projektiisi. Sijainti voi olla mikä tahansa, mutta tällä kertaa Reports luon kansion ja laitan sen sinne. Tämä sijoittelusijainti vaikuttaa myöhemmin määritettävään polkuun.

Avaa seuraavaksi lisäämäsi raportin ominaisuudet.

Määritä koontitoiminnoksi Upotettu resurssi. Tämä tarkoittaa resurssin upottamista EXE (DLL) -tiedostoon. Raportti ladataan yksilöllisesti työpöydälle samalla tavalla kuin verkkoon.

Kirjoita seuraavaksi koodi ladataksesi raportin ja tulostaaksesi sen PDF-muotoon. Koska se on konsolisovellus, se on kuvattava Ohjelma.cs sellaisena kuin se on, mutta jos se on työpöytä, se on kuvattava painiketapahtumassa jne., Ja jos se on ASP.NET, se on kuvattava paikassa, jossa sitä käsitellään, kun se lähetetään.

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

En selitä yksityiskohtaisesti, millaista käsittelyä se on, koska se on kirjoitettu koodin kommentteihin. Tärkeintä on määrittää raporttitiedoston sijainti ensimmäisellä rivillä. Muoto on seuraava <アセンブリ名>.<レポートファイルのパス> , ja kaikki polun erottimet ovat pisteitä.

Viimeinen on Stream, joten muunna se PDF-muotoon käsittelysisällön mukaan.

Jos esimerkiksi haluat tallentaa sen paikallisena tiedostona, lisää seuraava.

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

Jos haluat ladata sen ASP.NET, lisää seuraava.

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

Yritä avata tulostettu PDF-tiedosto nähdäksesi, onko se kunnossa.

PDF-tiedoston tulostaminen vientisuodattimien avulla (osaraportit)

Käytä PDF-vientisuodatinta, joka on käytettävissä osaraporteissa.

Se luodaan konsoliprojektissa samalla tavalla kuin sivuraporteissa. Tässä luomaasi koodia ja asetuksia voidaan käyttää muissa projekteissa.

Kun olet luonut projektin, lisää tarvittavat paketit. Tällä kertaa tulostamme vientisuodattimella, joten lisäämme vain yhden.

  • GrapeCity.ActiveReports.Export.PDF (16.4.0)

Lisää raporttitiedosto projektiisi. Sijainti voi olla mikä tahansa, mutta tällä kertaa Reports luon kansion ja laitan sen sinne. Tämä sijoittelusijainti vaikuttaa myöhemmin määritettävään polkuun.

Avaa seuraavaksi lisäämäsi raportin ominaisuudet.

Määritä koontitoiminnoksi Upotettu resurssi. Tämä tarkoittaa resurssin upottamista EXE (DLL) -tiedostoon. Raportti ladataan yksilöllisesti työpöydälle samalla tavalla kuin verkkoon.

Kirjoita seuraavaksi koodi ladataksesi raportin ja tulostaaksesi sen PDF-muotoon. Koska se on konsolisovellus, se on kuvattava Ohjelma.cs sellaisena kuin se on, mutta jos se on työpöytä, se on kuvattava painiketapahtumassa jne., Ja jos se on ASP.NET, se on kuvattava paikassa, jossa sitä käsitellään, kun se lähetetään.

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

En selitä yksityiskohtaisesti, millaista käsittelyä se on, koska se on kirjoitettu koodin kommentteihin. Tärkeintä on määrittää raporttitiedoston sijainti ensimmäisellä rivillä. Muoto on seuraava <アセンブリ名>.<レポートファイルのパス> , ja kaikki polun erottimet ovat pisteitä.

Viimeinen on Stream, joten muunna se PDF-muotoon käsittelysisällön mukaan.

Jos esimerkiksi haluat tallentaa sen paikallisena tiedostona, lisää seuraava.

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

Jos haluat ladata sen ASP.NET, lisää seuraava.

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

Yritä avata tulostettu PDF-tiedosto nähdäksesi, onko se kunnossa.