Java:jasper报告上的空白页问题

时间:2013-05-30 10:07:17

标签: java jasper-reports

我有一个报告,在详细信息区域中有2个子报告。我想在列页脚中添加一个分页参数,但是当我预览我的报告时,它会在最后给我一个空白页面。我已在其属性窗口中为我的子报表块设置了以下内容。

Print Repeated Values已检查

Remove Line When Blank已检查

3 个答案:

答案 0 :(得分:2)

回复位于此链接http://mattjiang.blogspot.com/2007/05/easy-way-to-remove-blank-page-generated.html

private void removeBlankPage(List<JRPrintPage> pages) {
  for (Iterator<JRPrintPage> i = pages.iterator(); i.hasNext();) {
    JRPrintPage page = i.next();
    if (page.getElements().size() == 0) {
      i.remove();
    }
  }
}

答案 1 :(得分:2)

使用此链接http://mattjiang.blogspot.com/2007/05/easy-way-to-remove-blank-page-generated.html,我可以浏览生成的jasper,并在报告中找到“垃圾元素”:

int actualPage = 1;
for (Iterator<JRPrintPage> i=jasperPrint.getPages().iterator(); i.hasNext();) {
  JRPrintPage page = i.next();
  System.out.println(String.format("Page: %s, size: %s", actualPage, page.getElements().size()));
     for (Object element : page.getElements()) {
        System.out.println("Element: " + element);
        if (element instanceof JRTemplatePrintRectangle) {
            JRTemplatePrintRectangle rectangle = (JRTemplatePrintRectangle) element;
            System.out.println(String.format("Rectangle: Key: %s", rectangle.getKey()));
        }
    }
     actualPage++;
}

答案 2 :(得分:0)

删除JasperReports生成的空白页的简便方法。

如果您的JasperReports报告还有一个子报告,并且它是作为PDF文件生成的。在某些情况下,可能会在PDF文件中找到空白页。这是我的解决方案,可以轻松删除它。

private void removeBlankPage(List<JRPrintPage> pages) {

      for (Iterator<JRPrintPage> i=pages.iterator(); i.hasNext();) {
          JRPrintPage page = i.next();
          if (page.getElements().size() == 0)
              i.remove();
      }
  }

在将JasperPrint实例刷新为PDF之前,应调用此方法。

遵循示例代码,最好知道JasperPrint的对象层次结构。

  1. JasperPrint有一个或多个JRPrintPage,您可以通过getPages()的{​​{1}}方法获取它。它返回JasperPrint的列表。如果您有三个元素,那么您的打印机将打印3页。
  2. JRPrintPage有一个或多个JRPrintPage,每个元素可能是一串文字,图片或矩形等。您可以动态更改其位置或内容,甚至添加新JRPrintElementJRPrintElement
  3. 信用:http://mattjiang.blogspot.in/2007/05/easy-way-to-remove-blank-page-generated.html