我有一个报告,在详细信息区域中有2个子报告。我想在列页脚中添加一个分页参数,但是当我预览我的报告时,它会在最后给我一个空白页面。我已在其属性窗口中为我的子报表块设置了以下内容。
Print Repeated Values
已检查
Remove Line When Blank
已检查
答案 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的对象层次结构。
JRPrintPage
,您可以通过getPages()
的{{1}}方法获取它。它返回JasperPrint
的列表。如果您有三个元素,那么您的打印机将打印3页。JRPrintPage
有一个或多个JRPrintPage
,每个元素可能是一串文字,图片或矩形等。您可以动态更改其位置或内容,甚至添加新JRPrintElement
成JRPrintElement
。信用:http://mattjiang.blogspot.in/2007/05/easy-way-to-remove-blank-page-generated.html