Tôi phải chuẩn bị báo cáo bằng năm truy vấn sql khác nhau. Mỗi truy vấn sẽ đưa ra một bảng báo cáo.Cách đối chiếu nhiều báo cáo jrxml jasper thành một tệp đầu ra pdf duy nhất
Vì vậy, tôi đã viết 5 file jrxml mỗi tương ứng với một trong các truy vấn trên với các tiêu đề của riêng mình, thiết lập tiêu đề, footers, pagenumbers vv
Bây giờ, tôi có thể biên dịch, in ấn và xuất khẩu mỗi trên jrxmls thành 5 bản pdf khác nhau.
Tuy nhiên, khách hàng muốn tất cả các báo cáo được đối chiếu thành một bản pdf duy nhất. Đó là trong pdf cuối cùng, đầu tiên bốn trang sẽ được báo cáo một, năm trang tiếp theo báo cáo hai, sau đó báo cáo ba và vv và vv.
1) Làm cách nào để đạt được điều này?
2) Mỗi báo cáo có số trang là 1/4, 2/4, 3/4, vv. Trường hợp phần thứ hai nghĩa là số trang hoàn thành được đánh giá với thời gian đánh giá dưới dạng báo cáo. Vì vậy, khi tôi sẽ tổng hợp tất cả các báo cáo trong pdf đơn (nếu có thể), nó cũng sẽ có thể tái số các trang trong justification để pdf cuối cùng?
Dựa trên câu trả lời dưới đây, tôi đã làm như sau trong lớp java của tôi và nó hoạt động:
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();
}
Ảnh trên: Input1, Input2, Input3 là đường dẫn chuỗi đầu vào jrxmls
đâu file JRXML của tôi chỉ cần in ba thư: 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>
Cảm ơn bạn đã đọc!
câu trả lời Alex K là tốt. Bạn cũng có thể nhận được những gì bạn muốn bằng cách đặt các báo cáo riêng lẻ vào các báo cáo con của một báo cáo chính. Nó sẽ có nhiều công việc hơn, nhưng nó sẽ cho phép bạn xử lý yêu cầu đánh số trang. Bạn chắc chắn nên bỏ phiếu cho điều này là tốt. Nó sẽ bao gồm chính xác những gì bạn mô tả: http://jasperforge.org/projects/jasperreports/tracker/view.php?id=4178 – mdahlman