Menampilkan laporan ActiveReports sebagai file PDF

Halaman Diperbarui :
Tanggal pembuatan halaman :

Lingkungan operasi

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

Prasyarat

Windows
  • Windows 8.1
  • jendela 10
  • jendela 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 Kerangka Kerja
  • NET Framework 4.6.2
  • NET Framework 4.7
  • NET Framework 4.8
.JARING
  • .NET inti 3.1
  • .NET 5
  • .NET 6
ActiveReports untuk .NET
  • ActiveReports untuk .NET 16.0J

Cara menampilkan ke file PDF

Jika pengguna menginginkan laporan sebagai file PDF, cara tercepat untuk menyediakannya adalah dengan melihat laporan di pemirsa. Selain menampilkan laporan, viewer memiliki fungsi untuk mencetak dan mengeluarkan file seperti PDF, jadi jika Anda menampilkan viewer, Anda dapat meminta pengguna untuk mengeluarkan file PDF tersebut.

Namun, dalam beberapa kasus, Anda mungkin tidak ingin mengganggu pengguna, atau Anda mungkin ingin mengarahkan file PDF secara sistematis. Bagian ini menjelaskan cara mengeluarkan file PDF secara terprogram langsung dari laporan.

Metode dan Batasan Output File PDF

Ada beberapa cara untuk mengeluarkan file PDF secara terprogram, tetapi tidak semuanya dapat diterima. Ini bervariasi tergantung pada versi ActiveReports, platform, kerangka kerja, dan jenis laporan yang dilakukannya. Misalnya, di ActiveReports 16, laporan bagian dan halaman dihasilkan secara berbeda secara terprogram. Contohnya juga dapat ditemukan di halaman resmi.

Untuk itu, berikut beberapa contoh programmatic PDF output yang bisa Anda jadikan referensi untuk menemukan yang sesuai dengan proyek Anda.

Tentang contoh laporan

File laporan yang disertakan dalam template untuk proyek baru kosong, jadi kami akan menggunakan laporan sampel resmi. Berikut adalah beberapa saran, jadi silakan unduh dari salah satu situs berikut.

Dalam hal ini, kami akan menggunakan contoh laporan berikut.

  • Laporan Halaman : Estimate_page_ipa.rdlx
  • Laporan bagian: Invoice.rpx (termasuk dalam proyek sampel WebSample16)

Merender dan membuat PDF (Laporan Halaman/Laporan RDL)

Ada "filter ekspor" untuk mengeluarkan PDF, tetapi dalam versi 16 hanya dapat digunakan untuk laporan bagian.

Oleh karena itu, laporan halaman/laporan RDL perlu dibuat dengan "Ekstensi Menggambar" seperti yang dijelaskan pada halaman di atas.

Pertama-tama, saya akan membuat proyek, tetapi kali ini saya akan membuatnya dengan aplikasi konsol sederhana. Ini sama mudahnya untuk diterapkan ke versi desktop dan web seperti halnya ke versi web.

Saat Anda membuat proyek, pilih Aplikasi Konsol.

Setelah Anda membuat proyek, tambahkan paket yang diperlukan.

Inilah yang akan Anda tambahkan: Harap jangan mendapatkan versi terbaru, tetapi gunakan versi yang dijelaskan di bawah ini. Tampaknya beberapa kombinasi paket tidak berfungsi dengan baik dengan versi terbaru. Tanda peringatan ditampilkan, tetapi abaikan karena dependensi tidak cocok. Namun, ada kemungkinan bahwa itu akan berubah dengan peningkatan versi di masa mendatang, jadi harap sesuaikan setiap saat. GrapeCity.Documents.Imaging GrapeCity.Documents.Pdf dan diperlukan untuk merender ke PDF.

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

Tambahkan file laporan ke proyek Anda. Lokasinya bisa di mana saja, tapi kali ini saya Reports membuat folder dan meletakkannya di sana. Lokasi penempatan ini memengaruhi jalur yang Anda tentukan nanti.

Selanjutnya, buka properti laporan yang Anda tambahkan.

Atur tindakan build ke Sumber Daya Tertanam. Ini berarti menyematkan sumber daya di dalam EXE (DLL). Laporan dimuat secara unik di desktop seperti di web.

Selanjutnya, tulis kode untuk memuat laporan dan mencetaknya ke PDF. Karena ini adalah aplikasi konsol, itu harus dijelaskan dalam Program.cs apa adanya, tetapi jika itu adalah desktop, itu harus dijelaskan dalam acara tombol, dll., Dan jika ASP.NET, itu harus dijelaskan di tempat di mana ia diproses ketika diposting.

// レポートファイルがあるパス
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 menjelaskan secara rinci jenis pemrosesan apa itu karena tertulis di komentar kode. Kuncinya adalah menentukan lokasi file laporan di baris pertama. Formatnya adalah sebagai <アセンブリ名>.<レポートファイルのパス> berikut, dan semua pemisah jalur adalah titik.

Yang terakhir adalah Stream, jadi silakan ubah ke PDF sesuai dengan konten pemrosesan.

Misalnya, jika Anda ingin menyimpannya sebagai file lokal, tambahkan yang berikut ini.

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

Jika Anda ingin mengunduhnya dengan ASP.NET, tambahkan yang berikut ini.

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

Coba buka file PDF keluaran untuk melihat apakah tidak apa-apa.

Output PDF menggunakan filter ekspor (laporan bagian)

Gunakan filter ekspor PDF yang tersedia untuk laporan bagian.

Ini dibuat dalam proyek konsol dengan cara yang sama seperti untuk laporan halaman. Kode dan pengaturan yang Anda buat di sini dapat diterapkan ke proyek lain.

Setelah Anda membuat proyek, tambahkan paket yang diperlukan. Kali ini, kami akan menampilkan filter ekspor, jadi kami hanya akan menambahkan satu.

  • GrapeCity.ActiveReports.Export.Pdf (16.4.0)

Tambahkan file laporan ke proyek Anda. Lokasinya bisa di mana saja, tapi kali ini saya Reports membuat folder dan meletakkannya di sana. Lokasi penempatan ini memengaruhi jalur yang Anda tentukan nanti.

Selanjutnya, buka properti laporan yang Anda tambahkan.

Atur tindakan build ke Sumber Daya Tertanam. Ini berarti menyematkan sumber daya di dalam EXE (DLL). Laporan dimuat secara unik di desktop seperti di web.

Selanjutnya, tulis kode untuk memuat laporan dan mencetaknya ke PDF. Karena ini adalah aplikasi konsol, itu harus dijelaskan dalam Program.cs apa adanya, tetapi jika itu adalah desktop, itu harus dijelaskan dalam acara tombol, dll., Dan jika ASP.NET, itu harus dijelaskan di tempat di mana ia diproses ketika diposting.

// レポートファイルがあるパス
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 menjelaskan secara rinci jenis pemrosesan apa itu karena tertulis di komentar kode. Kuncinya adalah menentukan lokasi file laporan di baris pertama. Formatnya adalah sebagai <アセンブリ名>.<レポートファイルのパス> berikut, dan semua pemisah jalur adalah titik.

Yang terakhir adalah Stream, jadi silakan ubah ke PDF sesuai dengan konten pemrosesan.

Misalnya, jika Anda ingin menyimpannya sebagai file lokal, tambahkan yang berikut ini.

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

Jika Anda ingin mengunduhnya dengan ASP.NET, tambahkan yang berikut ini.

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

Coba buka file PDF keluaran untuk melihat apakah tidak apa-apa.