Output laporan ActiveReports sebagai fail PDF

Laman dikemaskini :
Tarikh penciptaan halaman :

Persekitaran operasi

Windows
  • Windows 10 Pro 22H2
Visual Studio
  • Edisi Komuniti Visual Studio 2022
ActiveReports untuk .NET
  • ActiveReports untuk .NET 16.0J

Prasyarat

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
  • Rangka Kerja BERSIH 4.6.2
  • Rangka Kerja BERSIH 4.7
  • Rangka Kerja BERSIH 4.8
.BERSIH
  • .Teras NET 3.1
  • .NET 5
  • .NET 6
ActiveReports untuk .NET
  • ActiveReports untuk .NET 16.0J

Cara mengeluarkan ke fail PDF

Jika pengguna inginkan laporan sebagai fail PDF, cara paling cepat untuk menyediakannya ialah dengan melihat laporan dalam pemapar. Selain memaparkan laporan, penonton mempunyai fungsi untuk mencetak dan mengeluarkan fail seperti PDF, jadi jika anda memaparkan pemapar, anda boleh meminta pengguna mengeluarkan fail PDF.

Walau bagaimanapun, dalam beberapa kes, anda mungkin tidak mahu mengganggu pengguna, atau anda mungkin mahu mengarahkan fail PDF secara sistematik. Bahagian ini menerangkan cara mengeluarkan fail PDF secara programatik terus daripada laporan.

Kaedah dan Batasan Output Fail PDF

Terdapat beberapa cara untuk mengeluarkan fail PDF secara programatik, tetapi tidak semuanya boleh diterima. Ini berbeza-beza bergantung pada versi ActiveReports, platform, rangka kerja, dan jenis laporan yang dilakukannya. Contohnya, dalam ActiveReports 16, laporan seksyen dan halaman output berbeza secara programatik. Satu contoh ini juga boleh didapati di halaman rasmi.

Atas sebab ini, berikut adalah beberapa contoh output PDF programatik yang boleh anda gunakan sebagai rujukan untuk mencari yang sesuai dengan projek anda.

Mengenai laporan sampel

Fail laporan yang disertakan dalam templat untuk projek baru kosong, jadi kami akan menggunakan laporan sampel rasmi. Berikut adalah beberapa cadangan, jadi sila muat turun dari salah satu laman web berikut.

Dalam kes ini, kami akan menggunakan laporan sampel berikut.

  • Laporan Halaman : Estimate_page_ipa.rdlx
  • Laporan bahagian: Invoice.rpx (termasuk dalam projek sampel WebSample16)

Memaparkan dan menjana PDF (Laporan Halaman/Laporan RDL)

Terdapat "penapis eksport" untuk mengeluarkan PDF, tetapi dalam versi 16 ia hanya boleh digunakan untuk laporan bahagian.

Oleh itu, laporan halaman/laporan RDL perlu dijana dengan "Sambungan Lukisan" seperti yang diterangkan pada halaman di atas.

Pertama sekali, saya akan membuat projek, tetapi kali ini saya akan membuatnya dengan aplikasi konsol mudah. Ia sama mudah digunakan pada versi desktop dan web kerana ia adalah untuk versi web.

Apabila anda mencipta projek, pilih Apl Konsol.

Selepas anda membuat projek, tambahkan pakej yang diperlukan.

Berikut ialah perkara yang akan anda tambahkan: Sila jangan dapatkan versi terkini, tetapi gunakan versi yang diterangkan di bawah. Nampaknya beberapa kombinasi pakej tidak berfungsi dengan betul dengan versi terkini. Tanda amaran dipaparkan, tetapi abaikannya kerana kebergantungan tidak sepadan. Walau bagaimanapun, terdapat kemungkinan bahawa ia akan berubah dengan peningkatan versi pada masa akan datang, jadi sila laraskannya setiap kali. GrapeCity.Documents.Imaging GrapeCity.Documents.Pdf dan dikehendaki diberikan kepada PDF.

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

Menambah fail laporan pada projek anda. Lokasi boleh berada di mana-mana sahaja, tetapi kali ini saya Reports mencipta folder dan meletakkannya di sana. Lokasi peletakan ini mempengaruhi laluan yang anda tentukan kemudian.

Seterusnya, buka sifat laporan yang anda tambah.

Tetapkan tindakan binaan kepada Sumber Terbenam. Ini bermakna membenamkan sumber di dalam EXE (DLL). Laporan ini dimuatkan secara unik pada desktop seperti di web.

Seterusnya, tulis kod untuk memuatkan laporan dan cetaknya ke PDF. Oleh kerana ia adalah aplikasi konsol, ia harus diterangkan dalam Program.cs seperti itu, tetapi jika ia adalah desktop, ia harus diterangkan dalam acara butang, dan lain-lain, dan jika ia ASP.NET, ia harus diterangkan di tempat di mana ia diproses apabila ia disiarkan.

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

Saya tidak akan menerangkan secara terperinci jenis pemprosesannya kerana ia ditulis dalam komen kod. Kuncinya adalah untuk menentukan lokasi fail laporan dalam baris pertama. Formatnya adalah seperti <アセンブリ名>.<レポートファイルのパス> berikut, dan semua pemisah laluan adalah tempoh.

Yang terakhir ialah Stream, jadi sila tukar kepada PDF mengikut kandungan pemprosesan.

Contohnya, jika anda ingin menyimpannya sebagai fail tempatan, tambahkan yang berikut.

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

Jika anda ingin memuat turunnya dengan ASP.NET, tambahkan yang berikut.

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

Cuba buka fail PDF output untuk melihat sama ada ia baik-baik saja.

Output PDF menggunakan penapis eksport (laporan bahagian)

Gunakan penapis eksport PDF yang tersedia untuk laporan seksyen.

Ia dicipta dalam projek konsol dengan cara yang sama seperti laporan halaman. Kod dan tetapan yang anda buat di sini boleh digunakan untuk projek lain.

Selepas anda membuat projek, tambahkan pakej yang diperlukan. Kali ini, kami akan mengeluarkan penapis eksport, jadi kami hanya akan menambah satu.

  • GrapeCity.ActiveReports.Export.Pdf (16.4.0)

Menambah fail laporan pada projek anda. Lokasi boleh berada di mana-mana sahaja, tetapi kali ini saya Reports mencipta folder dan meletakkannya di sana. Lokasi peletakan ini mempengaruhi laluan yang anda tentukan kemudian.

Seterusnya, buka sifat laporan yang anda tambah.

Tetapkan tindakan binaan kepada Sumber Terbenam. Ini bermakna membenamkan sumber di dalam EXE (DLL). Laporan ini dimuatkan secara unik pada desktop seperti di web.

Seterusnya, tulis kod untuk memuatkan laporan dan cetaknya ke PDF. Oleh kerana ia adalah aplikasi konsol, ia harus diterangkan dalam Program.cs seperti itu, tetapi jika ia adalah desktop, ia harus diterangkan dalam acara butang, dan lain-lain, dan jika ia ASP.NET, ia harus diterangkan di tempat di mana ia diproses apabila ia disiarkan.

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

Saya tidak akan menerangkan secara terperinci jenis pemprosesannya kerana ia ditulis dalam komen kod. Kuncinya adalah untuk menentukan lokasi fail laporan dalam baris pertama. Formatnya adalah seperti <アセンブリ名>.<レポートファイルのパス> berikut, dan semua pemisah laluan adalah tempoh.

Yang terakhir ialah Stream, jadi sila tukar kepada PDF mengikut kandungan pemprosesan.

Contohnya, jika anda ingin menyimpannya sebagai fail tempatan, tambahkan yang berikut.

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

Jika anda ingin memuat turunnya dengan ASP.NET, tambahkan yang berikut.

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

Cuba buka fail PDF output untuk melihat sama ada ia baik-baik saja.