[英]Jasper Reports: How to combine two report streams into one PDF output?
I have this code that only generates one Jasper report at a time to PDF based on a given condition. 我有这段代码只能根据给定条件一次只生成一份Jasper报告为PDF。 But what if I want to combine both Jaspers into one PDF file?
但是,如果我想将两个Jaspers合并为一个PDF文件怎么办? (ie the PDF output should be LoadTagR2R.jasper + LoadTagR2RLandscape.jasper -- which will be one PDF output stream with multiple pages)
(即,PDF输出应为LoadTagR2R.jasper + LoadTagR2RLandscape.jasper-这将是一个包含多页的PDF输出流)
if (fullHalfTag.equalsIgnoreCase("Y")){ //Read FULL_HALF_TAG value (if FULL_HALF_TAG == 'Y')
logger.debug("Printing FULL tag...");
reportStream = getServletConfig().getServletContext().getResourceAsStream("/reports/LoadTagR2RLandscape.jasper");
} else {
logger.debug("Printing HALF tag...");
reportStream = getServletConfig().getServletContext().getResourceAsStream("/reports/LoadTagR2R.jasper");
}
//Report parameters
Map parameters = new HashMap();
parameters.put("PLT_NO", pltNo);
parameters.put("TICKET_NO", ticketNo);
try {
Connection conn = ConnectionUtils.getConnection();
JasperRunManager.runReportToPdfStream(reportStream,servletOutputStream, parameters, conn);
response.setContentType("application/pdf");
servletOutputStream.flush();
servletOutputStream.close();
I have tried merging the two input streams as shown below but it didn't work. 我尝试合并两个输入流,如下所示,但是没有用。 Thoughts?
思考?
new java.io.SequenceInputStream(s1, s2).
This is the old way to do this: 这是执行此操作的旧方法:
JasperPrint jasperPrint1 = JasperFillManager.fillReport(reportStream1, parameters, conn);
JasperPrint jasperPrint2 = JasperFillManager.fillReport(reportStream2, parameters, conn);
List<JasperPrint> list = new ArrayList<JasperPrint>();
list.add(jasperPrint1);
list.add(jasperPrint2);
JRPdfExporter exporter = new JRPdfExporter();
exporter.setParameter(JRPdfExporterParameter.JASPER_PRINT_LIST, list);
exporter.setParameter(JRPdfExporterParameter.OUTPUT_STREAM,servletOutputStream);
exporter.exportReport();
EDIT: 编辑:
In JasperReports 6.1.1 API JRPdfExporterParameter.JASPER_PRINT_LIST
and JRPdfExporterParameter.OUTPUT_STREAM
are deprecated adding new method. 在JasperReports 6.1.1中, 不建议使用 API
JRPdfExporterParameter.JASPER_PRINT_LIST
和JRPdfExporterParameter.OUTPUT_STREAM
添加新方法。
Replace: 更换:
exporter.setParameter(JRPdfExporterParameter.JASPER_PRINT_LIST, list);
exporter.setParameter(JRPdfExporterParameter.OUTPUT_STREAM,servletOutputStream);
with 同
exporter.setExporterInput(SimpleExporterInput.getInstance(list));
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(servletOutputStream));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.