jasper-reports - JasperReports 中的右对齐页码信息

标签 jasper-reports

在 JasperReports 中,我喜欢以 current-page/total-pages 样式呈现页码。
研究官方演示,您可以使用三个 TextFields 找到以下解决方案(因为没有内置变量
页数)

<!-- Right aligned current page -->
<textField>
    <reportElement x="100" width="40" .../>
    <textElement textAlignment="Right" ... />
    <textFieldExpression class="java.lang.String">
        <![CDATA[String.valueOf($V{PAGE_NUMBER})]]>
    </textFieldExpression>
</textField>

<!-- Centered aligned slash -->
<staticText>
    <reportElement x="140" width="5" .../>
    <textElement textAlignment="Center" ... />
    <text>
        <![CDATA[/]]>
    </text>
</staticText>

<!-- Left aligned total number pages (evaluationTime="Reports") -->
<textField evaluationTime="Report">
    <reportElement x="145" width="40"/>
    <textElement textAlignment="Left" ... />
    <textFieldExpression class="java.lang.String">
        <![CDATA[String.valueOf($V{PAGE_NUMBER})]]>
    </textFieldExpression>
</textField>

但是,这仅在完整的分页信息相对于页面居中(中间有斜杠)时才有效。
我想要实现的是以总页数与右边框具有恒定距离的方式右对齐整个组。

如何实现这一目标?

最佳答案

乍一看,这是一个更难的问题。当您尝试更精确地说明“页数没有内置变量”这一说法时,关键问题就变得清晰了。所有变量都有一个评估时间。所以变量 $V{PAGE_NUMBER}确实是页数的内置变量……但仅当在报告时对其进行评估。

因此,您的总页数字段必须在 Report Time 处进行评估。 .

同样,完全相同的变量 $V{PAGE_NUMBER}确实是当前页码的内置变量...但仅当在 Now 处评估时或 Page (或其他合适的时间)。

因此您的当前页面字段必须被评估 NowPage .

因此,这些变量必须位于不同的文本字段中,以便可以在不同的时间进行评估。

但这与您的要求相冲突。由于您不能将它们放入同一个文本字段中,因此您不能将最右侧的项目右对齐并且使其左侧的项目完美地流入其中。

根据您的具体情况,您可能能够实现可接受的解决方法。但我的猜测是,解决方法所涉及的工作量太大了。例如,您可以想象一个在完成报表填写后运行的脚本。它可以通过报表解析找到字段“xxx 的第 3 页”并将 xxx 替换为正确的总数。我不确定这到底是如何工作的;这听起来主要是坏消息。我不推荐它。

或者,也许您可​​以以某种方式从外部计算总页数,并将其作为参数传递给报告。例如,如果页数直接取决于行数,它将起作用。但这只能在非常特殊的情况下起作用。这是一个黑客。

您当然应该记录增强请求。我可以想象一个特殊的变量,当放入一个在神奇时间进行评估的文本字段中时,它可以执行您想要的操作 Auto .但是现在我没有看到任何简单的方法来获得你想要的东西。

关于jasper-reports - JasperReports 中的右对齐页码信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10189474/

相关文章:

grails - 性能问题碧 Jade 报告和grails/groovy

java - 可以在 Web 应用程序中使用 BIRT 而无需在服务器上部署单独的 Web 应用程序吗?

maven - Maven jasperreports-functions-6.1.1 的存储库

java - 如何获取复杂JavaBean的值

java - 如何在 Jasper 中找出 String[] 的大小

debugging - 如何调试 jasper 报告?

xml - PDF导出在Grails 2.3.2中不起作用

java - 如何直接使用打印机打印 JasperPrint?

jasper-reports - 当在打印第一页成功而其他为空的 jaspersoft 子报表中的表中添加更多行时,为什么?

java - 使用 JRTextExporter 导出 jasperreport 时出现 ArrayOutOfBoundException