Jasper Reports:如何将两个报告流合并为一个PDF输出? [英] Jasper Reports: How to combine two report streams into one PDF output?

查看:1323
本文介绍了Jasper Reports:如何将两个报告流合并为一个PDF输出?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这样的代码,它只根据给定的条件一次生成一个Jasper报告。但是如果我想将两个Jaspers合并为一个PDF文件呢? (即PDF输出应为LoadTagR2R.jasper + LoadTagR2RLandscape.jasper - 这将是一个包含多个页面的PDF输出流)

I have this code that only generates one Jasper report at a time to PDF based on a given condition. But what if I want to combine both Jaspers into one PDF file? (i.e. the PDF output should be LoadTagR2R.jasper + LoadTagR2RLandscape.jasper -- which will be one PDF output stream with multiple pages)

        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();

编辑:

JasperReports 6.1.1 API JRPdfExporterParameter.JASPER_PRINT_LIST JRPdfExporterParameter.OUTPUT_STREAM 已弃用添加新方法。

替换:

exporter.setParameter(JRPdfExporterParameter.JASPER_PRINT_LIST, list);
exporter.setParameter(JRPdfExporterParameter.OUTPUT_STREAM,servletOutputStream);

with

exporter.setExporterInput(SimpleExporterInput.getInstance(list));
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(servletOutputStream));

这篇关于Jasper Reports:如何将两个报告流合并为一个PDF输出?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆