【问题标题】:Multiple Jasper reports - Single request多个 Jasper 报告 - 单个请求
【发布时间】:2016-01-07 00:34:01
【问题描述】:

我有一个要求,我可以在其中选择多条记录,然后选择为每个选定条目生成带有文档的压缩报告(在我的情况下为 pdf)的操作。 例如Employee1,Employee2,Employee3会被选中,当我选择生成报告时,应该为员工生成3个报告,并且输出必须被压缩和下载。

现在我要做的是生成 jasperPrint 并将报告导出到 ZipOutputstream,并为每个员工添加一个新的 zipentry。 这意味着运行三次查询并将输出流添加到 zip。

有没有更好的方法?

【问题讨论】:

    标签: jasper-reports zip


    【解决方案1】:

    您的解决方案通常是正确的方法,如果您需要避免多次查询,则可以选择替代方法。

    1. 将所有数据加载到List<Employee>,为每个员工传递new JRBeanCollectionDataSource(List<Employee>)。 (这会减少查询但会增加内存使用量)。

    2. 如果您可以控制页面(例如每页 1 个员工),您可以生成 1 个包含所有员工的 pdf,然后使用 将其拆分为多个 pdf。

      PdfReader reader = new PdfReader("nameOfReport.pdf");
      int n = reader.getNumberOfPages();
      int i = 0;            
      while ( i < n ) {
          Document document = new Document(reader.getPageSizeWithRotation(1));
          PdfCopy writer = new PdfCopy(document, new FileOutputStream("Employee_" + i + ".pdf"));
          document.open();
          PdfImportedPage page = writer.getImportedPage(reader, ++i);
          writer.addPage(page);
          document.close();
          writer.close();
      }
      

    【讨论】:

    • 感谢 Petter.Option1 的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多