【问题标题】:Java: blank page issue on jasper reportJava:jasper 报告上的空白页问题
【发布时间】:2013-05-30 10:07:17
【问题描述】:

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

Print Repeated Values已选中

Remove Line When Blank已选中

【问题讨论】:

    标签: java jasper-reports


    【解决方案1】:

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

    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】:

      回复在此链接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();
          }
        }
      }
      

      【讨论】:

      • 您应该将链接中的有用信息添加到您的答案中作为编辑。我们不喜欢这里只有链接的答案。
      【解决方案3】:

      删除 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,你可以通过JasperPrintgetPages()方法得到它。它返回JRPrintPage 的列表。如果您有三个元素,那么您的打印机将打印 3 页。
      2. 一个JRPrintPage有一个或多个JRPrintElement,每个元素可能是一串文本,也可能是一张图片,也可能是一个矩形等。你可以动态改变它的位置或内容,甚至可以添加新的JRPrintElement进入JRPrintPage

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-17
        • 2018-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多