Извеждане на отчет на ActiveReports като PDF файл

Страницата се актуализира :
Дата на създаване на страница :

Работна среда

Уиндоус
  • Виндовс 10 Про 22Х2
Визуално студио
  • Издание на общността на 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
Визуално студио
  • Визуално студио 2017
  • Визуално студио 2019
  • Визуално студио 2022
.NET Framework
  • NET рамка 4.6.2
  • NET рамка 4.7
  • NET рамка 4.8
.НЕТЕН
  • .NET ядро 3.1
  • .НЕТ 5
  • .НЕТ 6
ActiveReports за .NET
  • ActiveReports за .NET 16.0J

Как да изведете в PDF файл

Ако потребителят иска доклад като PDF файл, най-бързият начин да го предоставите е докладът да бъде разгледан от зрителя. В допълнение към показването на отчети, зрителят има функция за отпечатване и извеждане на файлове като PDF, така че ако покажете зрителя, можете да помолите потребителя да изведе PDF файла.

В някои случаи обаче може да не искате да притеснявате потребителя или може да искате систематично да насочвате PDF файла. Този раздел описва как програмно да изведете PDF файл директно от отчет.

Методи и ограничения на изходния PDF файл

Има няколко начина за програмно извеждане на PDF файлове, но не всички от тях са приемливи. Това варира в зависимост от версията на ActiveReports, платформата, рамката и типа на отчета, който изпълнява. Например в ActiveReports 16 отчетите за секции и страници се извеждат по различен програмен начин. Пример за това може да се намери и на официалната страница.

Поради тази причина ето някои примери за програмен PDF изход, който можете да използвате като справка, за да намерите този, който отговаря на вашия проект.

За примерния доклад

Файлът на отчета, включен в шаблона за новия проект, е празен, така че ще използваме официалния примерен доклад. Ето някои предложения, така че моля, изтеглете ги от един от следните сайтове.

В този случай ще използваме следния примерен доклад.

  • Отчет на страницата : Estimate_page_ipa.rdlx
  • Отчет на раздела: Invoice.rpx (включен в примерния проект WebSample16)

Рендиране и генериране на PDF файлове (Page Reports/RDL Reports)

Има "филтър за експортиране" за извеждане на PDF файлове, но във версия 16 той може да се използва само за отчети на секции.

Следователно, отчетите за страници / RDL отчетите трябва да бъдат генерирани с "Разширение за рисуване", както е описано на горната страница.

На първо място, ще създам проект, но този път ще го направя с просто конзолно приложение. Това е също толкова лесно да се прилага за настолни компютри и уеб версии, тъй като е толкова лесно да се прилага за уеб версия.

Когато създавате проект, изберете Конзолно приложение.

След като създадете проекта, добавете необходимите пакети.

Ето какво ще добавите: Моля, не получавайте най-новата версия, но използвайте версията, описана по-долу. Изглежда, че някои комбинации от пакети не работят правилно с най-новата версия. Показва се предупредителен знак, но го игнорирайте, защото зависимостите не съвпадат. Въпреки това, има вероятност тя да се промени с ъпгрейди на версиите в бъдеще, така че, моля, коригирайте я всеки път. GrapeCity.Documents.Imaging GrapeCity.Documents.Pdf и са необходими за рендиране в PDF.

  • GrapeCity.ActiveReports.Export.pdf (16.4.0)
  • GrapeCity.Документи.Изображения (6.0.3)
  • ГрейпСити.Документи.Pdf (6.0.3)

Добавяне на файл с отчет към вашия проект. Местоположението може да е навсякъде, но този път създавам Reports папка и я слагам там. Това местоположение на разположение засяга пътя, който ще зададете по-късно.

След това отворете свойствата на отчета, който добавихте.

Задайте действието за изграждане на вграден ресурс. Това означава вграждане на ресурса в EXE (DLL). Отчетът се зарежда еднозначно на работния плот, както и в уеб.

След това напишете кода, за да заредите отчета и да го отпечатате в PDF. Тъй като това е конзолно приложение, то трябва да бъде описано в Program.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 папка и я слагам там. Това местоположение на разположение засяга пътя, който ще зададете по-късно.

След това отворете свойствата на отчета, който добавихте.

Задайте действието за изграждане на вграден ресурс. Това означава вграждане на ресурса в EXE (DLL). Отчетът се зарежда еднозначно на работния плот, както и в уеб.

След това напишете кода, за да заредите отчета и да го отпечатате в PDF. Тъй като това е конзолно приложение, то трябва да бъде описано в Program.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 файл, за да видите дали е наред.