ActiveReports jelentés kimenete PDF-fájlként

Oldal frissítve :
Oldal létrehozásának dátuma :

Működési környezet

Windows
  • Windows 10 Pro 22H2 esetén
Visual Studio
  • Visual Studio 2022 közösségi kiadás
NET-hez készült ActiveReports
  • ActiveReports for .NET 16.0J

Előfeltételek

Windows
  • Windows 8.1
  • Windows 10 esetén
  • Windows 11 esetén
  • Windows Server 2012 esetén
  • Windows Server 2012 R2
  • Windows Server 2016 esetén
  • Windows Server 2019 esetén
  • Windows Server 2022 esetén
Visual Studio
  • Visual Studio 2017
  • Visual Studio 2019
  • Visual Studio 2022
NET-keretrendszer
  • NET-keretrendszer 4.6.2-es verziója
  • NET-keretrendszer 4.7-es verziója
  • NET-keretrendszer 4.8-as verziója
.HÁLÓ
  • .NET Core 3.1
  • .NET 5
  • .NET 6
NET-hez készült ActiveReports
  • ActiveReports for .NET 16.0J

Hogyan lehet PDF-fájlba exportálni

Ha a felhasználó PDF-fájlként szeretne jelentést készíteni, a leggyorsabb módja annak, hogy a jelentést megtekinthesse a megtekintőben. A jelentések megjelenítése mellett a megjelenítő rendelkezik olyan fájlok nyomtatására és kimenetére is, mint a PDF, így ha megjeleníti a megtekintőt, megkérheti a felhasználót, hogy adja ki a PDF-fájlt.

Bizonyos esetekben azonban előfordulhat, hogy nem akarja zavarni a felhasználót, vagy szisztematikusan szeretné irányítani a PDF-fájlt. Ez a szakasz azt ismerteti, hogyan lehet programozott módon PDF-fájlt közvetlenül egy jelentésből exportálni.

PDF-fájlok kimeneti módszerei és korlátozásai

A PDF-fájlok programozott kimenetének számos módja van, de nem mindegyik elfogadható. Ez az ActiveReports verziójától, a platformtól, a keretrendszertől és az elvégzett jelentés típusától függően változik. Az ActiveReports 16-ban például a szakasz- és oldaljelentések kimenete programozott módon eltérő. Erre példa található a hivatalos oldalon is.

Ezért íme néhány példa a programozott PDF-kimenetre, amelyet referenciaként használhat a projektjének megfelelő kiválasztásához.

A mintajelentés

Az új projekt sablonjában található jelentésfájl üres, ezért a hivatalos mintajelentést fogjuk használni. Íme néhány javaslat, ezért kérjük, töltse le őket az alábbi webhelyek egyikéről.

Ebben az esetben a következő mintajelentést fogjuk használni.

  • Oldaljelentés : Estimate_page_ipa.rdlx
  • Szakaszjelentés: Invoice.rpx (a WebSample16 mintaprojekt része)

PDF-fájlok megjelenítése és létrehozása (oldaljelentések/RDL-jelentések)

Van egy "exportálási szűrő" a PDF-ek kiadásához, de a 16-os verzióban csak szakaszjelentésekhez használható.

Ezért az oldaljelentéseket/RDL-jelentéseket a fenti oldalon leírtak szerint a "Rajzkiterjesztéssel" kell létrehozni.

Először is létrehozok egy projektet, de ezúttal egy egyszerű konzolalkalmazással készítem el. Ugyanolyan könnyen alkalmazható az asztali és webes verziókra, mint a webes verzióra.

Projekt létrehozásakor válassza a Console App lehetőséget.

A projekt létrehozása után adja hozzá a szükséges csomagokat.

A következőket fogja hozzáadni: Kérjük, ne szerezze be a legújabb verziót, hanem használja az alább leírt verziót. Úgy tűnik, hogy egyes csomagkombinációk nem működnek megfelelően a legújabb verzióval. Megjelenik egy figyelmeztető jel, de figyelmen kívül hagyja, mert a függőségek nem egyeznek. Fennáll azonban annak a lehetősége, hogy a jövőben a verziófrissítésekkel változni fog, ezért kérjük, minden alkalommal módosítsa. GrapeCity.Documents.Imaging GrapeCity.Documents.Pdf és PDF-ben való megjelenítéshez szükségesek.

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

Vegyen fel egy jelentésfájlt a projektbe. A hely bárhol lehet, de ezúttal létrehozok Reports egy mappát, és beteszem oda. Ez az elhelyezési hely hatással van a később megadott elérési útra.

Ezután nyissa meg a hozzáadott jelentés tulajdonságait.

Állítsa a buildműveletet Beágyazott erőforrás értékre. Ez azt jelenti, hogy az erőforrást be kell ágyazni egy EXE-be (DLL). A jelentés ugyanúgy betöltődik az asztalra, mint az internetre.

Ezután írja be a kódot a jelentés betöltéséhez és PDF-be nyomtatásához. Mivel ez egy konzolalkalmazás, a Program.cs ahogy van, de ha asztali, akkor egy gombeseményben stb., Ha pedig ASP.NET, akkor a közzétételkor a feldolgozás helyén kell leírni.

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

Nem fogom részletesen elmagyarázni, hogy milyen feldolgozásról van szó, mert a kód megjegyzéseiben van írva. A legfontosabb a jelentésfájl helyének megadása az első sorban. A formátum a <アセンブリ名>.<レポートファイルのパス> következő, és minden útvonal-elválasztó pont.

Az utolsó a Stream, ezért kérjük, konvertálja PDF-be a feldolgozási tartalomnak megfelelően.

Ha például helyi fájlként szeretné menteni, adja hozzá a következőket.

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

Ha ASP.NET szeretné letölteni, adja hozzá a következőket.

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

Próbálja meg megnyitni a kimeneti PDF-fájlt, és ellenőrizze, hogy rendben van-e.

PDF kimenete exportálási szűrők használatával (szakaszjelentések)

Használja a szakaszjelentésekhez elérhető PDF-exportálási szűrőt.

A konzolprojektben ugyanúgy jön létre, mint az oldaljelentéseknél. Az itt létrehozott kód és beállítások más projektekre is alkalmazhatók.

A projekt létrehozása után adja hozzá a szükséges csomagokat. Ezúttal exportálási szűrővel fogunk kiadni, így csak egyet adunk hozzá.

  • GrapeCity.ActiveReports.Export.Pdf (16.4.0)

Vegyen fel egy jelentésfájlt a projektbe. A hely bárhol lehet, de ezúttal létrehozok Reports egy mappát, és beteszem oda. Ez az elhelyezési hely hatással van a később megadott elérési útra.

Ezután nyissa meg a hozzáadott jelentés tulajdonságait.

Állítsa a buildműveletet Beágyazott erőforrás értékre. Ez azt jelenti, hogy az erőforrást be kell ágyazni egy EXE-be (DLL). A jelentés ugyanúgy betöltődik az asztalra, mint az internetre.

Ezután írja be a kódot a jelentés betöltéséhez és PDF-be nyomtatásához. Mivel ez egy konzolalkalmazás, a Program.cs ahogy van, de ha asztali, akkor egy gombeseményben stb., Ha pedig ASP.NET, akkor a közzétételkor a feldolgozás helyén kell leírni.

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

Nem fogom részletesen elmagyarázni, hogy milyen feldolgozásról van szó, mert a kód megjegyzéseiben van írva. A legfontosabb a jelentésfájl helyének megadása az első sorban. A formátum a <アセンブリ名>.<レポートファイルのパス> következő, és minden útvonal-elválasztó pont.

Az utolsó a Stream, ezért kérjük, konvertálja PDF-be a feldolgozási tartalomnak megfelelően.

Ha például helyi fájlként szeretné menteni, adja hozzá a következőket.

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

Ha ASP.NET szeretné letölteni, adja hozzá a következőket.

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

Próbálja meg megnyitni a kimeneti PDF-fájlt, és ellenőrizze, hogy rendben van-e.