如何将多个jrxml jasper报告整理为单个pdf输出文件 [英] How to collate multiple jrxml jasper reports into a one single pdf output file

查看:129
本文介绍了如何将多个jrxml jasper报告整理为单个pdf输出文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我必须使用五种不同的sql查询来准备报告。每个查询都会给出一个报告表。

I have to prepare reports using five different sql queries. Each query will give out one report table.

所以我写了5个jrxml文件,每个文件对应一个上面的查询,带有自己的标题,标题设置,页脚,页面编号,等等。

So I wrote 5 jrxml files each corresponding to one of the above query with their own headings, title settings, footers, pagenumbers, etc.

现在,我能够将上述每个jrxmls编译,打印并导出到5个不同的pdf中。

Now, I am able to compile, print and export each of the above jrxmls into 5 different pdfs.

但是,客户希望将所有报告整理成一个单独的pdf。那是在最后的pdf中,前四页将是报告一,接下来的五页报告两页,然后报告三页,依此类推。

However, client wants all the reports collated into one single pdf. That is in the final pdf, first four pages will be say report one, next five pages report two, then report three and so on and so forth.

1)如何实现这个目标?

1) How to achieve this ?

2)每个报告的页码为1/4,2 / 4,3 / 4等。第二部分即完整页码以评估时间作为报告进行评估。因此,当我将以单个pdf(如果可能)整理所有报告时,是否还可以将理由中的页面重新编号为最终pdf?

2) Each report has page number as 1/4, 2/4, 3/4 etc. Where the second part i.e. the complete page number is evaluated with evaluation time as report. So when I will collate all reports in single pdf (if possible), will it also be possible to re-number the pages in justification to final pdf ?

基于回答下面,我在我的java类中做了以下工作并且它有效:

Based on the answer below, I did the following in my java class and it works:

 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的字符串路径

Above: input1, input2, input3 are string paths to input jrxmls

我的JRXML文件只打印三条消息:Hello World 1,Hello World 2,Hello World 3.

Where my JRXML files just print three messages: 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>

感谢阅读!

推荐答案

您可以利用导出整个jasperprint列表:

You can take advantage of exporting the whole jasperprint list:

List jpList = new ArrayList();
jpList.add(JRLoader.loadObjectFromFile("build/reports/Report1.jrprint")); 
...
JRExporter exporter = new JRPdfExporter(); 
exporter.setParameter(JRPdfExporterParameter.JASPER_PRINT_LIST, jpList); 
exporter.setParameter(JRPdfExporterParameter.OUTPUT_STREAM, stream); 
exporter.exportReport();

这篇关于如何将多个jrxml jasper报告整理为单个pdf输出文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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