2

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

Print Repeated Values检查

Remove Line When Blank检查

4

3 回答 3

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++;
}
于 2014-02-27T16:29:21.193 回答
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();
    }
  }
}
于 2013-07-30T19:45:09.947 回答
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(). JasperPrint它返回一个列表JRPrintPage。如果您有三个元素,那么您的打印机将打印 3 页。
  2. AJRPrintPage有一个或多个JRPrintElement,每个元素可能是一串文本,或者是一张图片,或者是一个矩形等。你可以动态地改变它的位置或内容,甚至可以添加新的JRPrintElementJRPrintPage.

学分: http: //mattjiang.blogspot.in/2007/05/easy-way-to-remove-blank-page-generated.html

于 2016-08-09T14:03:02.327 回答