如何在每个页面的页脚中添加“续下页...”文本,除了最后一页?

时间:2016-07-27 19:48:37

标签: jasper-reports

要求:

Jasper报告中除最后一页之外的每页的页脚中添加“续下页...”文本。所以基本上我想让用户知道在报告的下一页上还有更多要查看的内容。我知道第x页的y 这个东西,如果有更多页面要看,我们也会知道,但我想让它更加用户友好。

到目前为止我做了什么!!

  1. 创建了一个自定义变量,如下所示:

    <variable name="pNumber" class="java.lang.Integer" resetType="Page">
        <variableExpression><![CDATA[1]]></variableExpression>
        <initialValueExpression><![CDATA[$V{PAGE_NUMBER} + 1]]></initialValueExpression>
    </variable>
    
  2. 在页脚中创建TextField,如下所示:

    <textField evaluationTime="Auto">
            <reportElement mode="Opaque" x="0" y="0" width="555" height="15" backcolor="#D1CBCB" uuid="dd084b9e-66ab-494a-ad7d-0860be1796fb">
                <property name="com.jaspersoft.studio.unit.x" value="pixel"/>
                <property name="com.jaspersoft.studio.unit.y" value="pixel"/>
                <property name="com.jaspersoft.studio.unit.height" value="pixel"/>                  
            </reportElement>
            <textElement textAlignment="Center" verticalAlignment="Middle">
                <font isBold="true"/>
            </textElement>
            <textFieldExpression><![CDATA["Continued on next page..." + $V{pNumber} +"!="+ $V{PAGE_NUMBER} + " : "+ new Boolean(($V{pNumber}.equals($V{PAGE_NUMBER})) == false)]]></textFieldExpression>
        </textField>
    
  3. 现在,当我运行总共3页的报告时,TextField内容会在每个页面中显示以下文字:

    第一页:接下页...... 1!= 3:真

    第二页:接下页...... 2!= 3:是真的

    第三页:接下页...... 3!= 3:假

    此表达式在“文本字段”表达式中完美运行。现在,我想在TextField的Print When Expression中使用相同的条件,如果返回true,则允许我显示“Continue ... text”,否则返回false。

    但是,如果我在同一TextField的Print When Expression中使用此条件,则TextField在两种情况下都不显示(true / false)。表达式如下:

    <printWhenExpression><![CDATA[new Boolean(($V{pNumber}.equals($V{PAGE_NUMBER})) == false)]]></printWhenExpression>
    

    我在这个问题上搜索了很多,但没有找到任何直接的解决方案。顺便说一下,我正在使用TIBCOJaspersoft®Studio6.1.1 - 可视设计器 - JasperReports社区版

1 个答案:

答案 0 :(得分:1)

在打印时使用它的问题当表达式为evautationTime时,您无法更改,因此您需要像Compare current page number with last page number这样的黑客

然而,这个问题的真正解决方案是使用<lastPageFooter>频段,它被添加为能够在最后一页页脚中具有不同的内容,因此不需要带有黑客的表达式,只需将其保留为{ {1}}。