Výstup sestavy ActiveReports jako souboru PDF

Stránky aktualizovány :
Datum vytvoření stránky :

Provozní prostředí

Windows
  • Windows 10 Pro 22H2
Visual Studio
  • Edice Visual Studio 2022 Community
ActiveReports pro .NET
  • ActiveReports pro .NET 16.0J

Požadavky

Windows
  • Windows 8.1
  • Windows 10
  • Systém 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
Rozhraní .NET Framework
  • NET Framework 4.6.2
  • NET Framework 4.7
  • NET Framework 4.8
.SÍŤ
  • .NET Core 3.1
  • .NET 5
  • .NET 6
ActiveReports pro .NET
  • ActiveReports pro .NET 16.0J

Jak vytvořit výstup do souboru PDF

Pokud uživatel požaduje sestavu jako soubor PDF, nejrychlejším způsobem, jak ji poskytnout, je zobrazit ji v prohlížeči. Kromě zobrazení sestav má prohlížeč funkci pro tisk a výstup souborů, jako je PDF, takže pokud prohlížeč zobrazíte, můžete požádat uživatele o výstup souboru PDF.

V některých případech však možná nebudete chtít uživatele obtěžovat nebo budete chtít soubor PDF systematicky směrovat. Tato část popisuje, jak programově odeslat soubor PDF přímo ze sestavy.

Metody a omezení výstupu souborů PDF

Existuje několik způsobů, jak programově vytvářet soubory PDF, ale ne všechny jsou přijatelné. To se liší v závislosti na verzi ActiveReports, platformě, architektuře a typu sestavy, kterou provádí. Například v aplikaci ActiveReports 16 jsou sestavy oddílů a stránek programově odesílány odlišně. Příklad toho lze také nalézt na oficiální stránce.

Z tohoto důvodu uvádíme několik příkladů programového výstupu PDF, který můžete použít jako referenci k nalezení toho, který vyhovuje vašemu projektu.

O ukázkové sestavě

Soubor zprávy obsažený v šabloně pro nový projekt je prázdný, proto použijeme oficiální vzorovou zprávu. Zde je několik návrhů, proto si je prosím stáhněte z jednoho z následujících webů.

V tomto případě použijeme následující ukázkovou sestavu.

  • Zpráva o stránce : Estimate_page_ipa.rdlx
  • Sestava oddílu: Invoice.rpx (zahrnutá v ukázkovém projektu WebSample16)

Vykreslování a generování souborů PDF (Page Reports/RDL Reports)

K dispozici je "exportní filtr" pro výstup PDF, ale ve verzi 16 jej lze použít pouze pro sestavy sekcí.

Proto je třeba generovat sestavy stránek/RDL sestavy pomocí "Rozšíření výkresu", jak je popsáno na výše uvedené stránce.

Nejprve vytvořím projekt, ale tentokrát ho udělám pomocí jednoduché konzolové aplikace. Použití pro desktopovou a webovou verzi je stejně snadné jako pro webovou verzi.

Při vytváření projektu vyberte Konzolová aplikace.

Po vytvoření projektu přidejte požadované balíčky.

Zde je to, co přidáte: Nestahujte prosím nejnovější verzi, ale použijte verzi popsanou níže. Zdá se, že některé kombinace balíčků nefungují správně s nejnovější verzí. Zobrazí se značka upozornění, ale ignorujte ji, protože závislosti se neshodují. Existuje však možnost, že se v budoucnu změní s upgrady verzí, proto jej prosím pokaždé upravte. GrapeCity.Documents.Imaging GrapeCity.Documents.Pdf a jsou vyžadovány pro vykreslení do PDF.

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

Přidejte do projektu soubor sestavy. Umístění může být kdekoli, ale tentokrát vytvářím Reports složku a vkládám ji tam. Toto umístění má vliv na cestu, kterou zadáte později.

Dále otevřete vlastnosti sestavy, kterou jste přidali.

Nastavte akci sestavení na Integrovaný prostředek. To znamená vložení prostředku do souboru EXE (DLL). Sestava se jedinečně načte na plochu stejně jako na webu.

Dále napište kód pro načtení sestavy a její tisk do PDF. Vzhledem k tomu, že se jedná o konzolovou aplikaci, měla by být popsána v Programu.cs jak je, ale pokud se jedná o desktop, měla by být popsána v události tlačítka atd., a pokud je ASP.NET, měla by být popsána v místě, kde je zpracována při odeslá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();

Nebudu podrobně vysvětlovat, o jaký druh zpracování se jedná, protože je to napsáno v komentářích kódu. Klíčem je zadat umístění souboru sestavy na prvním řádku. Formát je následující <アセンブリ名>.<レポートファイルのパス> a všechny oddělovače cest jsou tečky.

Poslední z nich je Stream, takže jej prosím převeďte do PDF podle obsahu zpracování.

Pokud jej například chcete uložit jako místní soubor, přidejte následující.

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

Pokud si jej chcete stáhnout s ASP.NET, přidejte následující.

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

Zkuste otevřít výstupní soubor PDF, abyste zjistili, zda je v pořádku.

Výstup PDF pomocí exportních filtrů (zprávy o řezech)

Použijte exportní filtr PDF, který je k dispozici pro zprávy o řezech.

Vytváří se v projektu konzoly stejným způsobem jako u sestav stránek. Kód a nastavení, které zde vytvoříte, lze použít na jiné projekty.

Po vytvoření projektu přidejte požadované balíčky. Tentokrát budeme mít výstup s exportním filtrem, takže přidáme pouze jeden.

  • GrapeCity.ActiveReports.Export.Pdf (16.4.0)

Přidejte do projektu soubor sestavy. Umístění může být kdekoli, ale tentokrát vytvářím Reports složku a vkládám ji tam. Toto umístění má vliv na cestu, kterou zadáte později.

Dále otevřete vlastnosti sestavy, kterou jste přidali.

Nastavte akci sestavení na Integrovaný prostředek. To znamená vložení prostředku do souboru EXE (DLL). Sestava se jedinečně načte na plochu stejně jako na webu.

Dále napište kód pro načtení sestavy a její tisk do PDF. Vzhledem k tomu, že se jedná o konzolovou aplikaci, měla by být popsána v Programu.cs jak je, ale pokud se jedná o desktop, měla by být popsána v události tlačítka atd., a pokud je ASP.NET, měla by být popsána v místě, kde je zpracována při odeslá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);

Nebudu podrobně vysvětlovat, o jaký druh zpracování se jedná, protože je to napsáno v komentářích kódu. Klíčem je zadat umístění souboru sestavy na prvním řádku. Formát je následující <アセンブリ名>.<レポートファイルのパス> a všechny oddělovače cest jsou tečky.

Poslední z nich je Stream, takže jej prosím převeďte do PDF podle obsahu zpracování.

Pokud jej například chcete uložit jako místní soubor, přidejte následující.

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

Pokud si jej chcete stáhnout s ASP.NET, přidejte následující.

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

Zkuste otevřít výstupní soubor PDF, abyste zjistili, zda je v pořádku.