Виведення звіту ActiveReports у форматі PDF
Робоче середовище
- Вікна
-
- Windows 10 Pro 22H2
- Візуальна студія
-
- Версія для спільноти Visual Studio 2022
- ActiveReports для .NET
-
- ActiveReports для .NET 16.0J
Передумови
- Вікна
-
- Windows 8.1
- Вікна 10
- Вікна 11
- Windows Server 2012
- Windows Server 2012 R2
- Windows Server 2016
- Windows Server 2019
- Windows Server 2022
- Візуальна студія
-
- Visual Studio 2017
- Visual Studio 2019
- Visual Studio 2022
- Фреймворк .NET
-
- NET Framework 4.6.2
- NET Framework 4.7
- NET Framework 4.8
- .МЕРЕЖІ
-
- .NET Core 3.1
- .NET 5
- .NET 6
- ActiveReports для .NET
-
- ActiveReports для .NET 16.0J
Як вивести в PDF файл
Якщо користувач хоче, щоб звіт був у форматі PDF, найшвидший спосіб надати його – переглянути звіт у переглядачі. Окрім відображення звітів, переглядач має функцію друку та виведення файлів, таких як PDF, тому, якщо ви відображаєте переглядач, ви можете попросити користувача вивести PDF-файл.
Однак у деяких випадках ви можете не турбувати користувача або систематично спрямовувати PDF-файл. У цьому розділі описано, як програмно вивести PDF-файл безпосередньо зі звіту.
Методи та обмеження виведення файлів PDF
Існує кілька способів програмного виведення PDF-файлів, але не всі вони прийнятні. Це залежить від версії ActiveReports, платформи, структури та типу звіту, який він виконує. Наприклад, в ActiveReports 16 звіти про розділи і сторінки виводяться програмно по-різному. Приклад цього також можна знайти на офіційній сторінці.
З цієї причини ось кілька прикладів програмного виводу PDF, які ви можете використовувати як довідник, щоб знайти той, який підходить для вашого проекту.
Про зразок звіту
Файл звіту, включений в шаблон для нового проекту, порожній, тому ми будемо використовувати офіційний зразок звіту. Ось кілька пропозицій, тому, будь ласка, завантажте їх з одного з наступних сайтів.
- ActiveReports-Estimate-sample
- GrapeCity ActiveReports (GitHub) ( У кожному зразку проекту може бути файл звіту)
У цьому випадку скористаємося наступним зразком звіту.
- Звіт по сторінці: Estimate_page_ipa.rdlx
- Звіт по розділу: Invoice.rpx (включено в зразок проекту WebSample16)
Візуалізація та створення PDF-файлів (звітів сторінок/звітів RDL)
Існує «фільтр експорту» для виведення PDF-файлів, але в версії 16 його можна використовувати тільки для звітів по розділах.
Тому звіти сторінок/звіти RDL потрібно створювати за допомогою «Розширення для малювання», як описано на сторінці вище.
Перш за все, я створю проект, але цього разу зроблю його за допомогою простого консольного додатку. Його так само легко застосувати до десктопної та веб-версії, як і до веб-версії.
Коли ви створюєте проект, виберіть Console App.
Після того, як ви створите проект, додайте необхідні пакети.
Ось що ви додасте: Будь ласка, не завантажуйте останню версію, а використовуйте версію, описану нижче.
Схоже, що деякі комбінації пакунків не працюють належним чином з останньою версією.
Буде показано позначку попередження, але проігноруйте її, оскільки залежності не збігаються.
Однак існує ймовірність, що в майбутньому він зміниться з оновленням версії, тому, будь ласка, змінюйте його щоразу.
GrapeCity.Documents.Imaging
GrapeCity.Documents.Pdf
і є обов'язковими для відтворення у форматі PDF.
- GrapeCity.ActiveReports.Export.Pdf (16.4.0)
- GrapeCity.Documents.Imaging (6.0.3)
- GrapeCity.Documents.Pdf (6.0.3)
Додайте файл звіту до свого проекту. Локація може бути будь-де, але цього разу я Reports
створюю папку і кладу її туди.
Це місце розташування впливає на контур, який ви вкажете пізніше.
Далі відкрийте властивості доданого звіту.
Встановіть для дії збірки значення Embedded Resource. Це означає вбудовування ресурсу в EXE (DLL). Звіт завантажується як на робочому столі, так і в Інтернеті.
Далі напишіть код для завантаження звіту та роздрукуйте його у форматі PDF. Так як це консольний додаток, то він повинен бути описаний в Програмі.cs як є, але якщо це робочий стіл, то він повинен бути описаний в події кнопки і т.д., а якщо він ASP.NET, то він повинен бути описаний в тому місці, де він обробляється при його розміщенні.
// レポートファイルがあるパス
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();
Я не буду докладно пояснювати, що це за обробка, тому що це написано в коментарях до коду.
Ключовим моментом є вказівка місця розташування файлу звіту в першому рядку.
Формат такий <アセンブリ名>.<レポートファイルのパス>
, а всі роздільники шляхів є крапками.
Останнім є Stream, тому, будь ласка, конвертуйте його в PDF відповідно до вмісту обробки.
Наприклад, якщо ви хочете зберегти його як локальний файл, додайте наступне.
// ファイルにストリームを書き出します
using var fs = new FileStream("Output.pdf", FileMode.Create);
outputStream.CopyTo(fs);
Якщо ви хочете завантажити його за допомогою ASP.NET, додайте наступне.
return File(outputStream, "application/pdf", "Output.pdf");
Спробуйте відкрити вихідний PDF-файл, щоб перевірити, чи все гаразд.
Виведення PDF-файлу за допомогою фільтрів експорту (звітів про розділи)
Використовуйте фільтр експорту PDF, доступний для звітів розділів.
Створюється в консольному проекті так само, як і для звітів по сторінках. Код і налаштування, які ви створюєте тут, можна застосувати до інших проектів.
Після того, як ви створите проект, додайте необхідні пакети. Цього разу ми будемо виводити дані з фільтром експорту, тому додамо лише один.
- GrapeCity.ActiveReports.Export.Pdf (16.4.0)
Додайте файл звіту до свого проекту. Локація може бути будь-де, але цього разу я Reports
створюю папку і кладу її туди.
Це місце розташування впливає на контур, який ви вкажете пізніше.
Далі відкрийте властивості доданого звіту.
Встановіть для дії збірки значення Embedded Resource. Це означає вбудовування ресурсу в EXE (DLL). Звіт завантажується як на робочому столі, так і в Інтернеті.
Далі напишіть код для завантаження звіту та роздрукуйте його у форматі PDF. Так як це консольний додаток, то він повинен бути описаний в Програмі.cs як є, але якщо це робочий стіл, то він повинен бути описаний в події кнопки і т.д., а якщо він ASP.NET, то він повинен бути описаний в тому місці, де він обробляється при його розміщенні.
// レポートファイルがあるパス
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);
Я не буду докладно пояснювати, що це за обробка, тому що це написано в коментарях до коду.
Ключовим моментом є вказівка місця розташування файлу звіту в першому рядку.
Формат такий <アセンブリ名>.<レポートファイルのパス>
, а всі роздільники шляхів є крапками.
Останнім є Stream, тому, будь ласка, конвертуйте його в PDF відповідно до вмісту обробки.
Наприклад, якщо ви хочете зберегти його як локальний файл, додайте наступне.
// ファイルにストリームを書き出します
using var fs = new FileStream("Output.pdf", FileMode.Create);
outputStream.CopyTo(fs);
Якщо ви хочете завантажити його за допомогою ASP.NET, додайте наступне.
return File(outputStream, "application/pdf", "Output.pdf");
Спробуйте відкрити вихідний PDF-файл, щоб перевірити, чи все гаразд.