Изменение параметров для создания нового файла отчета
Добавлено: 02 фев 2021, 11:06
Здравствуйте,
У нас зарегистрированная версия пакета "stimulsoft-reports-js": "2018.2.3".
Задача: при большом объеме данных разбивать один отчет на несколько результирующих файлов. В самом файле выводить информацию номер части и количество частей. Например, Часть 2 из 5.
Мы столкнулись со следующей проблемой. При передачи параметра номер части во всех результирующих файлах отображается Часть 1 из 5.
Т.е. тот параметр, который пришел в первый раз.
Подскажите, как переопределить параметр для отчета? Не хочется инициализировать StiReport каждый раз в цикле, а просто менять параметр.
У нас зарегистрированная версия пакета "stimulsoft-reports-js": "2018.2.3".
Задача: при большом объеме данных разбивать один отчет на несколько результирующих файлов. В самом файле выводить информацию номер части и количество частей. Например, Часть 2 из 5.
Мы столкнулись со следующей проблемой. При передачи параметра номер части во всех результирующих файлах отображается Часть 1 из 5.
Т.е. тот параметр, который пришел в первый раз.
Подскажите, как переопределить параметр для отчета? Не хочется инициализировать StiReport каждый раз в цикле, а просто менять параметр.
Код: Выделить всё
let report = new Stimulsoft.Report.StiReport();
report.load(template);
let settings = new Stimulsoft.Report.Export.StiPdfExportSettings();
settings.imageQuality = 1.0;
settings.imageResolution = 300;
settings.pdfImageCompressionMethod = Stimulsoft.Report.Export.StiPdfImageCompressionMethod.Flate;
settings.pdfEmbeddedFonts = true;
settings.exportRtfTextAsImage = true;
settings.embeddedFonts = true;
let service = new Stimulsoft.Report.Export.StiPdfExportService();
let stream;
for (let i = 0; i < 5; ++i) {
let fileName = `report_${i+1}.pdf`;
if (report.dictionary.variables.getByName('partNumber'))
report.dictionary.variables.getByName('partNumber').valueObject = i + 1;
if (report.dictionary.variables.getByName('partsCount'))
report.dictionary.variables.getByName('partsCount').valueObject = 5;
stream = new Stimulsoft.System.IO.MemoryStream();
await new Promise((resolve, reject) => {
report.renderAsync(function () {
try {
service.exportToAsync(function () {
try {
fs.writeFileSync(fileName, Buffer.from(stream.toArray()));
resolve();
}
catch (err) {
reject(err);
}
}, report, stream, settings);
}
catch (err) {
reject(err);
}
}, false);
});
}