我已经读过没有办法使用iReport本地处理混合方向,但是阅读文档我想知道是否通过使用 JRDefaultScriptlet的beforePageInit()它可以以某种方式完成。在我的例子中,有一个肖像首页,与填充它们的数据一样多的横向页面,以及最后一个正面页面。
另一方面,有人知道吗:
提前致谢。
答案 0 :(得分:3)
所以我决定玩iReport,看看有什么选择。事实证明,通过一些努力和想象,有可能实现这一目标。这假设您的第一页位于标题部分,而您的最后一页位于摘要部分。
以横向模式创建报告。
在iReport中的报告属性下设置Title on New Page
和Summary on New Page
为真。
假设您使用标准的8.5“X 11”字母大小的页面,并且所有边距都设置为20,请将标题和摘要部分的高度设置为572.
将静态文本字段添加到相应的部分。
现在,对于每个静态文本字段,您需要将Rotate
属性设置为Left
(实际上它可能是Right
,重点是它们都需要是相同。
当然,将所需的所有其他字段添加到页眉,数据等的相应频段中。
导出报告。
注意:如果您有任何图片需要进入标题或摘要部分,您需要在iReport之外适当地旋转它们并保存。然后将旋转的图像设置为报告中的图像。不幸的是,图像标签似乎没有旋转属性,因为这样可以简化生活。
此外,如果您未设置步骤2中列出的属性,则无法将“标题”和“摘要”条带的高度设置为适当的宽度。如果您使用的是不同尺寸的纸张和/或 边距很容易找出最大尺寸(这是你需要的)是将波段的高度设置为一个非常大的数字。然后它将弹出并告诉你它是大的,以及最大大小实际是什么。
答案 1 :(得分:2)
不支持混合横向和纵向子报表,将来他们会添加一个对象调用JasperBook或类似的东西,你可以添加不同方向的不同子报表而不会出现问题,但目前你已经模拟了这一点不同的报告,并在展示它们之前加入它们。
即。
//单独创建报告
InputStream report1 = (InputStream) getClass().getResourceAsStream("/com/app/jasper/reportPortrait.jasper");
InputStream report2 = (InputStream) getClass().getResourceAsStream("/com/app/jasper/reportLandscape.jasper");
InputStream report3 = (InputStream) getClass().getResourceAsStream("/com/app/jasper/reportPortrait.jasper");
JasperPrint jasperPrint = JasperFillManager.fillReport(report, map, conn);
JasperPrint jasperPrint2 = JasperFillManager.fillReport(report2, map, conn);
JasperPrint jasperPrint3 = JasperFillManager.fillReport(report3, map, conn);
JRPdfExporter exp = new JRPdfExporter();
//将JasperPrint对象添加到ArrayList
List list = new ArrayList();
list.add(jasperPrint);
list.add( jasperPrint2 );
list.add(jasperPrint3);
//并告诉出口商加入报告清单。
exp.setParameter(JRPdfExporterParameter.JASPER_PRINT_LIST, list);
exp.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream());
exp.exportReport();
我在报告中这样做并且有效。祝你好运!