Мне нужно подготовить отчеты, используя пять разных запросов sql. Каждый запрос выдаст одну таблицу отчета.
Итак, я написал 5 файлов jrxml, каждый из которых соответствует одному из вышеуказанных запросов, со своими заголовками, настройками заголовков, нижними колонтитулами, номерами страниц и т. Д.
Теперь я могу скомпилировать, распечатать и экспортировать каждый из указанных выше jrxmls в 5 разных PDF-файлов.
Однако клиент хочет, чтобы все отчеты были собраны в один PDF-файл. То есть в окончательном pdf-формате: первые четыре страницы будут содержать, скажем, первый отчет, следующие пять страниц - отчет два, затем отчет три и так далее и так далее.
1) Как этого добиться?
2) Каждый отчет имеет номер страницы как 1/4, 2/4, 3/4 и т. Д. Где вторая часть, т.е. полный номер страницы, оценивается со временем оценки как отчет . Итак, когда я сопоставлю все отчеты в одном PDF-файле (если это возможно), можно ли будет перенумеровать страницы в обоснование в окончательный PDF-файл?
На основании ответа ниже я сделал следующее в своем классе java и это работает:
try
{
JasperReport jreport1 = JasperCompileManager.compileReport(input1);
JasperPrint jprint1 = JasperFillManager.fillReport(jreport1, new HashMap(), new JREmptyDataSource());
//JasperExportManager.exportReportToPdfFile(jprint, "/home/ashutosh/Desktop/desktop/nikunj/JasperTestApp/output/mytest.pdf");
JasperReport jreport2 = JasperCompileManager.compileReport(input2);
JasperPrint jprint2 = JasperFillManager.fillReport(jreport2, new HashMap(), new JREmptyDataSource());
JasperReport jreport3 = JasperCompileManager.compileReport(input3);
JasperPrint jprint3 = JasperFillManager.fillReport(jreport3, new HashMap(), new JREmptyDataSource());
List<JasperPrint> jprintlist = new ArrayList<JasperPrint>();
jprintlist.add(jprint1);
jprintlist.add(jprint2);
jprintlist.add(jprint3);
JRExporter exporter = new JRPdfExporter();
exporter.setParameter(JRPdfExporterParameter.JASPER_PRINT_LIST, jprintlist);
OutputStream output = new FileOutputStream(new File("/home/ashutosh/Desktop/desktop/nikunj/JasperTestApp/output/mytestbatch.pdf"));
exporter.setParameter(JRPdfExporterParameter.OUTPUT_STREAM, output);
exporter.exportReport();
}catch(Exception e)
{
e.printStackTrace();
}
Вверху: input1, input2, input3 - это строковые пути для ввода jrxmls
Где мои файлы JRXML просто выводят три сообщения: Hello World 1, Hello World 2, Hello World 3.
<?xml version="1.0"?>
<!DOCTYPE jasperReport
PUBLIC "-//JasperReports//DTD Report Design//EN"
"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport name="Simple_Report">
<detail>
<band height="20">
<staticText>
<reportElement x="180" y="0" width="200" height="20"/>
<text><![CDATA[Hello World One!]]></text>
</staticText>
</band>
</detail>
</jasperReport>
Спасибо за чтение!