我有一个在详细信息带中有 2 个子报告的报告。我想在列页脚中添加一个分页参数,但是当我预览我的报告时,它最后给了我一个空白页。我在他们的属性窗口中为我的子报告块设置了以下内容。
Print Repeated Values
检查
Remove Line When Blank
检查
我有一个在详细信息带中有 2 个子报告的报告。我想在列页脚中添加一个分页参数,但是当我预览我的报告时,它最后给了我一个空白页。我在他们的属性窗口中为我的子报告块设置了以下内容。
Print Repeated Values
检查
Remove Line When Blank
检查
使用此链接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++;
}
响应在此链接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();
}
}
}
删除 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 的对象层次结构。
JRPrintPage
你可以通过getPages()
. JasperPrint
它返回一个列表JRPrintPage
。如果您有三个元素,那么您的打印机将打印 3 页。JRPrintPage
有一个或多个JRPrintElement
,每个元素可能是一串文本,或者是一张图片,或者是一个矩形等。你可以动态地改变它的位置或内容,甚至可以添加新的JRPrintElement
到JRPrintPage
.学分: http: //mattjiang.blogspot.in/2007/05/easy-way-to-remove-blank-page-generated.html