在ireport中切换页面方向

时间:2012-06-10 15:45:55

标签: jasper-reports ireport orientation-changes

我已经读过没有办法使用iReport本地处理混合方向,但是阅读文档我想知道是否通过使用 JRDefaultScriptlet的beforePageInit()它可以以某种方式完成。在我的例子中,有一个肖像首页,与填充它们的数据一样多的横向页面,以及最后一个正面页面。

另一方面,有人知道吗:

  • 如果这是在不久的将来支持的功能
  • 如果有替代方案按要求执行并生成符合jasper标准的xml文件

提前致谢。

2 个答案:

答案 0 :(得分:3)

所以我决定玩iReport,看看有什么选择。事实证明,通过一些努力和想象,有可能实现这一目标。这假设您的第一页位于标题部分,而您的最后一页位于摘要部分。

  1. 以横向模式创建报告。

  2. 在iReport中的报告属性下设置Title on New PageSummary on New Page为真。

  3. 假设您使用标准的8.5“X 11”字母大小的页面,并且所有边距都设置为20,请将标题和摘要部分的高度设置为572.

  4. 将静态文本字段添加到相应的部分。

  5. 现在,对于每个静态文本字段,您需要将Rotate属性设置为Left(实际上它可能是Right,重点是它们都需要是相同。

  6. 当然,将所需的所有其他字段添加到页眉,数据等的相应频段中。

  7. 导出报告。

  8. 注意:如果您有任何图片需要进入标题或摘要部分,您需要在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();

我在报告中这样做并且有效。祝你好运!