Компонент Blazor Viewer предоставляет возможность печатать отчет различными способами и выполнять экспортирование отчета в различные форматы. Эти действия выполняются при помощи меню вьювера. Если требуется напечатать отчет или выполнить экспорт при помощи кода, например, в событии нажатия кнопки, то можно воспользоваться специальным классом StiReportResponse. Данный класс содержит набор статических методов, позволяющих выполнить печать либо экспорт отчета из кода, при этом вьювер отчетов не требуется.

 

Index.razor

@using Stimulsoft.Report

@using Stimulsoft.Report.Blazor

@using Stimulsoft.Report.Web

 

<button @onclick="@OnClickPrintButton">Print PDF</button>

<button @onclick="@OnClickExportButton">Export PDF</button>

 

@code

{

private StiReport LoadSimpleList()

{

var dataSet = new System.Data.DataSet();

dataSet.ReadXml("Data/Demo.xml");

 

var report = new StiReport();

report.Load("Reports/SimpleList.mrt");

report.RegData(dataSet);

 

return report;

}

 

protected void OnClickPrintButton()

{

var report = LoadSimpleList();

 

StiReportResponse.PrintAsPdf(report);

//StiReportResponse.PrintAsHtml(report);

}

 

protected void OnClickExportButton()

{

var report = LoadSimpleList();

 

StiReportResponse.ResponseAsPdf(report);

//StiReportResponse.ResponseAsExcel2007(report);

//StiReportResponse.ResponseAsPng(report);

//StiNetCoreReportResponse.ResponseAsJson(report);

}

}

 

 

Если на Razor странице отсутствуют компоненты по работе с отчётами (вьювер либо дизайнер), то необходимо выполнить предварительную инициализацию генератора отчётов. Это можно сделать, переопределив стандартное событие OnInitializedAsync страницы, добавив туда специальный статический метод StiBlazorHelper.Initialize(), на вход которого необходимо передать объект JSRuntime. После этого действия по экспорту и печати отчёта будут работать корректно.

 

Index.razor

@using Stimulsoft.Report

@using Stimulsoft.Report.Blazor

@inject IJSRuntime JSRuntime;

 

protected override Task OnInitializedAsync()

{

StiBlazorHelper.Initialize(JSRuntime);

 

return base.OnInitializedAsync();

}