当前位置: 首页 > 知识库问答 >
问题:

如何在jasper报表的最后一页和中间页启用不同的页眉?

鲜于光赫
2023-03-14

我需要启用3种页眉类型的报告:“第一页页眉”,“中间页页眉”和“最后一页页眉”。所有这些标头可以具有不同数量的报表元素,并且位于不同的位置。页脚也一样。

注意:报表必须在其detail频段中支持jr:table或jr:list等报表元素。这些元素必须通过xml数据源与数据一起提供。

我能够通过使用titleband来模拟第一页标题,但在启用“中间页标题”和“最后页标题”时遇到了问题。这就是我要做的:

<pageHeader>
<band height="100" splitType="Stretch">
    <frame>
        <reportElement x="0" y="0" height="100" width="555" uuid="f788c74b-6853-4bc7-8ed7-5e3d538287c9" isRemoveLineWhenBlank="true">
            <printWhenExpression>
                <![CDATA[new Boolean($V{PAGE_NUMBER} == $V{PAGE_COUNT})]]>
            </printWhenExpression>
        </reportElement>
        <staticText>
            <reportElement x="1" y="1" width="100" height="20" uuid="9777208b-5323-4045-aa49-a849d5c00c89"/>
            <text><![CDATA[LAST PAGE HEADER TEXT 1]]></text>
        </staticText>
        <staticText>
            <reportElement x="50" y="10" width="200" height="50" uuid="15313676-09e6-4d17-ac75-2df99f61bfee"/>
            <text><![CDATA[LAST PAGE HEADER TEXT 2]]></text>
        </staticText>
    </frame>
    <frame>
        <reportElement x="0" y="0" height="100" width="555" uuid="65577abd-8717-477a-f27e-c70e9eba46af" isRemoveLineWhenBlank="true">
            <printWhenExpression>
                <![CDATA[new Boolean($V{PAGE_NUMBER} != 1) && new Boolean($V{PAGE_NUMBER} != $V{PAGE_COUNT})]]>
            </printWhenExpression>
        </reportElement>
        <staticText>
            <reportElement x="70" y="0" width="300" height="100" uuid="0a866eb3-85cf-4376-d6a4-21b534d36df0"/>
            <text><![CDATA[MIDDLE PAGE HEADER TEXT 1]]></text>
        </staticText>
    </frame>
</band>
</pageHeader>
<printWhenExpression>
    <![CDATA[new Boolean($V{PAGE_NUMBER} == $V{PAGE_COUNT})]]>
</printWhenExpression>

有没有办法检查当前页是不是最后一页?还有,是否有其他方法来启用“中间页”和“最后页”标题?

注意:我能够通过使用框架最后一页页脚带为页脚实现类似的逻辑!

共有1个答案

丁学
2023-03-14

首先:$v{PAGE_COUNT}

生成当前页时处理的记录数。因此,您在页面中拥有的记录数,而不是页码数...

pagefooterlastpagefooterReportElement中,ReportElement可以有负Y坐标(如果IDE不允许,则需要手动编辑jrxml)ES。y=“-700”,它允许您将信息放在pageHeader和last pageHeader...

<printWhenExpression><![CDATA[new Boolean($V{PAGE_NUMBER}.intValue()==1)]]></printWhenExpression>
    null


中间页

在框架使用上:

<printWhenExpression><![CDATA[new Boolean($V{PAGE_NUMBER}.intValue()>1)]]></printWhenExpression>
  • 页头将框架放在页脚中,并使用负y坐标。
  • 页脚,使用页脚带。
    null
 类似资料:
  • 我是Jasper报告的新手。我有一个包含2组的报告。根据查询,正在打印多页。 第一组高度 - 95分,第二组高度 - 144分 我希望这些多页打印在一页中(我希望一页中包含5页)。每页高度为239点。(即使页面内容小于239分,我希望将剩余部分保留为空白,并在239分后开始下一页)。我尝试创建一个报告,并将上述报告作为子报告,并设置主报告的高度为1195(239*5)点。尽管如此,这些都被打印在不

  • 我只想在第一页和最后一页打印页脚。我怎样才能做到这一点?

  • 我在主报表中有一个子报表和页脚,我需要隐藏子报表部分的页脚。有没有办法做到这一点? 详情:我有主要报告。它有几个细节带和一个页脚。其中一个细节带(细节4)用从查询返回的数据填充。在这个带之后是“细节5”带,其中只有子报告,这是最后一个细节带。我的子报告包含几页文本。我需要页脚从我的主要报告不显示在这几页。所以我需要的是:页脚应该应用于页面,这是在细节带1-4生成的,但不是“细节5”。

  • 我正在使用jasperreport-4.5.0生成报告。它正在正确地生成报告。但是如果我的数据库中有大量数据,那么报告vl会显示在不同的页面中。所以我的要求是,如果我的报告有12页,那么我想显示12页中的第1页,12页中的第2页,12页中的第3页……就像我的页眉带一样。我怎么能做到这一点,任何人都可以对此提出一个想法。

  • 诸如此类。 我尝试使用iReport将“组页脚”频段中的最大化频段高度属性设置为true,但当我尝试查看时,会添加一些空页。