【发布时间】:2016-06-10 17:42:52
【问题描述】:
我有一个应用程序正在生成报告的多个部分,然后将它们连接在一起以生成 PDF 文档。我们想为每个部分生成适当的页码。我希望将 PAGE_OFFSET 参数传递给每个部分,并使用 PAGE_NUMBER + PAGE_OFFSET 计算新的页码。这可能吗?到目前为止,我尝试过的所有操作都会产生类型转换错误或无效计算。
【问题讨论】:
我有一个应用程序正在生成报告的多个部分,然后将它们连接在一起以生成 PDF 文档。我们想为每个部分生成适当的页码。我希望将 PAGE_OFFSET 参数传递给每个部分,并使用 PAGE_NUMBER + PAGE_OFFSET 计算新的页码。这可能吗?到目前为止,我尝试过的所有操作都会产生类型转换错误或无效计算。
【问题讨论】:
如果我理解正确,您希望将此页面偏移量传递给 iReport?
为您的偏移量创建一个新参数:参数类 java.lang.Integer 的 $P{offset}。然后,创建类 java.lang.Integer 的新变量。设置变量表达式为$V{PAGE_NUMBER}+$P{offset},计算为空,重置类型为Page,增量类型为None。
【讨论】:
尝试以下步骤
1.) 新建变量mypagenumber;整数类型,重置类型Group,递增类型page,计算类型count;变量表达式$V{mypagenumber},初始值new Integer(0)。
2.) 在您的报告中添加文本字段类型字符串、评估时间页面、文本字段表达式String.valueOf($V{mypagenumber}) 以提供组内的实际页面或评估时间组,然后选择您的组以提供组内的页面。
【讨论】:
如果您正在搜索“第 1 页,共 3 页”。查看 'evaluationTime' 的值 你必须这样写:
<textField evaluationTime="Page">
<reportElement x="328" y="0" width="154" height="20"/>
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="Arial" size="9"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA["Page"+$V{PAGE_NUMBER}+" of"]]></textFieldExpression>
</textField>
<textField evaluationTime="Report">
<reportElement x="485" y="0" width="63" height="20"/>
<textElement verticalAlignment="Middle">
<font fontName="Arial" size="9"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
【讨论】:
我的 Cristina 代码的更正版本(我使用 iReport 3.7.2)是:
<pageFooter>
<band height="20">
<textField evaluationTime="Page">
<reportElement x="766" y="0" width="154" height="20"/>
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="SansSerif" size="9"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA["Page "+$V{PAGE_NUMBER}.toString() + " of "]]></textFieldExpression>
</textField>
<textField evaluationTime="Report">
<reportElement x="924" y="0" width="63" height="20"/>
<textElement verticalAlignment="Middle">
<font fontName="SansSerif" size="9"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$V{PAGE_NUMBER}.toString()]]></textFieldExpression>
</textField>
</band>
</pageFooter>
【讨论】: