Add a new page dynamically
- rafaelwithoeft
- Posts: 70
- Joined: Thu Mar 05, 2015 8:26 pm
Add a new page dynamically
Hello, i have two reports (front and back and are separated files), customer like to print the pages, he has a chance to choice if want to print only "front page" or "front and back pages" together.
In this case, i need add "back page" dynamically.
This case is normally used for letters where we can have the content (inside) and out the sender information, Recipient etc ... (outside) on the same sheet.
Knowing that the pages are separated files, how can i add the "back page" dynamically to "front page"?
Thank you
In this case, i need add "back page" dynamically.
This case is normally used for letters where we can have the content (inside) and out the sender information, Recipient etc ... (outside) on the same sheet.
Knowing that the pages are separated files, how can i add the "back page" dynamically to "front page"?
Thank you
Re: Add a new page dynamically
Hello,
Please try to use this code. This code combines two built report:
Thank you.
Please try to use this code. This code combines two built report:
Code: Select all
StiReport sourceReport = new StiReport(); // load report 1
sourceReport.render();
// Open and render second report
StiReport sourceReport2 = new StiReport(); // load report 2
sourceReport2.render();
// Now create report and copy rendered page from the reports
StiReport report = new StiReport();
report.setIsRendered(true);
StiUnit newUnit = StiUnit.GetUnitFromReportUnit(report.getReportUnit());
for(StiPage page : sourceReport.getRenderedPages()) {
page.setReport(report);
page.NewGuid();
StiUnit oldUnit = StiUnit.GetUnitFromReportUnit(sourceReport.getReportUnit());
if (report.getReportUnit() != sourceReport.getReportUnit()) page.convert(oldUnit, newUnit);
report.getRenderedPages.add(page);
}
for(StiPage page : sourceReport2.getRenderedPages()) {
page.setReport(report);
page.NewGuid();
StiUnit oldUnit = StiUnit.GetUnitFromReportUnit(sourceReport2.getReportUnit());
if (report.getReportUnit() != sourceReport2.getReportUnit()) page.convert(oldUnit, newUnit);
report.getRenderedPages().add(page);
}
- rafaelwithoeft
- Posts: 70
- Joined: Thu Mar 05, 2015 8:26 pm
Re: Add a new page dynamically
Hello, thank you... but it did not work for me
I tried this code:
This add me a verse page, but only one page... For example, my report has 6 pages (after render) and only one verse page.
I need, 1 rendered page, 1 verse, 1 rendered page, 1 verse...
How i do it?
Thank you
I tried this code:
Code: Select all
StiPage page = relatorioVerso.getPages().get(0); // Page verse to add to current report
page.setReport(relatorioOriginal);
relatorioOriginal.getPages().addPage(page);
I need, 1 rendered page, 1 verse, 1 rendered page, 1 verse...
How i do it?
Thank you
Re: Add a new page dynamically
Hello, Rafael.
As a way you can create a new report and copy rendered pages there. One from rendered report, one verse and so on.
Thank you.
As a way you can create a new report and copy rendered pages there. One from rendered report, one verse and so on.
Thank you.
- rafaelwithoeft
- Posts: 70
- Joined: Thu Mar 05, 2015 8:26 pm
Re: Add a new page dynamically
Hello, im trying this code, but not working, sometimes return rendered page blank or returning NullPointerException...
you can help me please?
Thank you
you can help me please?
Code: Select all
//New Report
StiReport report = new StiReport();
report.setIsRendered(true);
//get back page report
InputStream stream = new ByteArrayInputStream(relatorioXmlString.getBytes(StandardCharsets.UTF_8));
StiReport relatorioVerso = StiSerializeManager.deserializeReport(stream);
relatorioOriginal.render(); // render main report
relatorioVerso.render(); // render back page
//back page
StiPage paginaVerso = relatorioVerso.getRenderedPages().get(0);
paginaVerso.setReport(report);
paginaVerso.NewGuid();
//foreach all rendered pages of main report and trying to add back page
for (StiPage page : relatorioOriginal.getRenderedPages()) {
page.setReport(report);
page.NewGuid();
report.getRenderedPages().add(page);
report.getRenderedPages().add(paginaVerso);
}
return report;
Re: Add a new page dynamically
Hello.
You can try next code:
You can try next code:
Code: Select all
//New Report
StiReport report = new StiReport();
report.setIsRendered(true);
//get back page report
InputStream stream = new ByteArrayInputStream(relatorioXmlString.getBytes(StandardCharsets.UTF_8));
StiReport relatorioVerso = StiSerializeManager.deserializeReport(stream);
relatorioOriginal.render(); // render main report
relatorioVerso.render(); // render back page
//back page
StiPage paginaVerso = relatorioVerso.getRenderedPages().get(0);
paginaVerso.setReport(report);
paginaVerso.NewGuid();
report.getRenderedPages().add(paginaVerso);
//foreach all rendered pages of main report and trying to add back page
for (StiPage page : relatorioOriginal.getRenderedPages()) {
page.setReport(report);
page.NewGuid();
report.getRenderedPages().add(page);
}
return report;
- rafaelwithoeft
- Posts: 70
- Joined: Thu Mar 05, 2015 8:26 pm
Re: Add a new page dynamically
Not working
i don't know how i do it...
I need render main report and add back page to each page rendered of main report.. :/
i don't know how i do it...
I need render main report and add back page to each page rendered of main report.. :/
Re: Add a new page dynamically
Hello.
Here is working example:
Here is working example:
Code: Select all
StiReport outReport = StiReport.newInstance();
outReport.setBookmark(report1.getBookmark());
outReport.getRenderedPages().clear();
for (StiPage page : report1.getRenderedPages()) {
outReport.getRenderedPages().add(page);
outReport.getRenderedPages().add((StiPage) report2.getRenderedPages().get(0).clone());
}
- rafaelwithoeft
- Posts: 70
- Joined: Thu Mar 05, 2015 8:26 pm
Re: Add a new page dynamically
Sorry, same problem, render only one blank page.
if i comment this code and go back the original report, this render normally.
* Using latest version
** Tried this code below too(not worked, rendered only pages of master report):
if i comment this code and go back the original report, this render normally.
* Using latest version
** Tried this code below too(not worked, rendered only pages of master report):
Code: Select all
//get back page report
InputStream stream = new ByteArrayInputStream(relatorioXmlString.getBytes(StandardCharsets.UTF_8));
StiReport relatorioVerso = StiSerializeManager.deserializeReport(stream);
relatorioOriginal.render(); // render main report
relatorioVerso.render(); // render back page
StiPagesCollection collection = new StiPagesCollection();
for (StiPage page : relatorioOriginal.getRenderedPages()) {
collection.add(page);
collection.add((StiPage) relatorioVerso.getRenderedPages().get(0).clone());
}
relatorioOriginal.getRenderedPages().clear();
relatorioOriginal.setRenderedPages(collection);
Re: Add a new page dynamically
Hello
Here is working example, you can see that code works & you can adapt it with your application;
Here is working example, you can see that code works & you can adapt it with your application;
- Attachments
-
- new_page.zip
- (726.94 KiB) Downloaded 884 times