Page 1 of 2
Merge multiple reports into one
Posted: Wed Aug 03, 2022 2:52 pm
by Lezenn
Hi,
I'd need to merge multiple reports into one.
I found this topic:
viewtopic.php?t=35102 about merging reports from code in C#.
But if I try it in Java,
returns null. IntelliJ shows me that
does nothing (empty method).
How can I do it in Java?
Re: Merge multiple reports into one
Posted: Thu Aug 04, 2022 6:32 am
by Lech Kulikowski
Hello,
Please check the following topic:
viewtopic.php?f=27&t=56842
Thank you.
Re: Merge multiple reports into one
Posted: Thu Aug 04, 2022 8:38 am
by Lezenn
Hi,
Thank for your reply.
I have this code:
Code: Select all
StiReport reportCombine = new StiReport();
reportCombine.setReportUnit(StiReportUnitType.Centimeters);
reportCombine.render();
reportCombine.getRenderedPages().clear();
for (/* Datas to inject in each subreport */) {
StiReport subReport = StiSerializeManager.deserializeReport(this.getClass().getClassLoader().getResourceAsStream("my_template.mrt"));
subReport.setCalculationMode(StiCalculationMode.Interpretation);
injecterDonnees(releve, subReport); // Puts datas into the report
subReport.render();
for (StiPage page : simpleReleve.getRenderedPages()) {
reportCombine.getRenderedPages().add(page);
}
}
StiExportManager.exportPdf(reportCombine, sortieDocument);
Stimulsoft crashes on the reportCombine.render() call, on an ArrayIndexOutOfBoundException Index 0, Size 0.
Am I doing it wrong ?
Re: Merge multiple reports into one
Posted: Fri Aug 05, 2022 7:06 am
by Vadim
Hello.
Instead new StiReport(); please use StiReport.newInstance()
Re: Merge multiple reports into one
Posted: Fri Aug 05, 2022 8:54 am
by Lezenn
Hi,
Thanks for your reply. The rendering does not crash anymore. Now I have to find out why I get a single blank page
Re: Merge multiple reports into one
Posted: Fri Aug 05, 2022 10:13 am
by Vadim
Hello.
Maybe you got empty simpleReleve.getRenderedPages()
Please check reportCombine.getRenderedPages() filling before PDF export.
Re: Merge multiple reports into one
Posted: Fri Aug 05, 2022 12:22 pm
by Lezenn
It seems like I get my simpleReports without any components.
Re: Merge multiple reports into one
Posted: Fri Aug 05, 2022 12:50 pm
by Lezenn
So,
My solution is:
Code: Select all
StiReport reportCombine = StiReport.newInstance();
reportCombine.setReportUnit(StiReportUnitType.Centimeters);
reportCombine.getRenderedPages().clear();
for (/* for each sub report data */) {
StiReport simpleReleve = StiSerializeManager.deserializeReport(
Objects.requireNonNull(this.getClass().getClassLoader().getResourceAsStream("template.mrt"))
);
simpleReleve.setCalculationMode(StiCalculationMode.Interpretation);
injecterDonnees(subReportData, simpleReleve); // Put sub report data
simpleReleve.render();
// Report merging
for (StiPage page : simpleReleve.getRenderedPages()) {
if (!reportCombine.getRenderedPages().add(page)) {
log.warn("Une page n'a pu être ajoutée au document final.");
}
}
}
StiExportManager.exportPdf(reportCombine, sortieDocument);
It works fine. Thank for your help !
Re: Merge multiple reports into one
Posted: Fri Aug 05, 2022 2:13 pm
by Lech Kulikowski
Hello,
You are welcome.
Re: Merge multiple reports into one
Posted: Thu Sep 15, 2022 8:44 am
by Lezenn
Hi, it's me again
I now have to do pagination on the whole document (the merged one).
For now, it shows pages like this: 1/1, 1/1, 1/2, 2/2, 1/4, 2/4, ...
I'd like to have the right values. For example: 1/15, 2/15, 3/15, ...
Do you have an idea ?