具有负y坐标的子报表在第二页上使用jaspersoft打印错误

时间:2014-12-19 13:07:23

标签: jasper-reports subreport page-numbering

我目前正在使用Jaspersoft Studio(版本5.6.2.final)来创建PDF文档。我目前遇到的问题是我可以使用一些帮助。

我有一个主报告,其中包含3个子报告。每个子报告都是完整的文档,带有自己的标题,详细信息和(最后)pageFooter band。每个子报表都是在自己的详细信息区域中创建的,具有分页功能,因此每个子报表都在新页面上开始。到目前为止还没有任何问题。

现在,客户想要在文档中特定位置的每个页面上显示页码,此位置对应于每个子报表的标题的特定部分。见下图:

Location of the pagenumber http://puu.sh/dAZzg/edaa1285c4.png

我要做的是在主报告中创建一个包含pageNumber的pageHeader。然后我给每个子报告一个负y坐标,以便它们滑过pageHeader,从而在正确的位置打印pageNumber。这部分有效。

<pageHeader>
    <band height="159">
        <property name="local_mesure_unitheight" value="cm"/>
        <textField>
            <reportElement x="483" y="145" width="31" height="14" uuid="f512ea15-2e4b-4c63-bf92-61b990d9c461">
                <property name="local_mesure_unitheight" value="cm"/>
                <property name="com.jaspersoft.studio.unit.height" value="cm"/>
                <property name="local_mesure_unity" value="cm"/>
                <property name="com.jaspersoft.studio.unit.y" value="cm"/>
            </reportElement>
            <textElement textAlignment="Left">
                <font fontName="Amerigo BT"/>
            </textElement>
            <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
        </textField>
    </band>
</pageHeader>
<detail>
    <band height="83" splitType="Stretch">
        <property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.VerticalRowLayout"/>
        <subreport>
            <reportElement positionType="Float" stretchType="RelativeToTallestObject" x="-56" y="-175" width="573" height="83" uuid="5e4141a0-ac50-485a-8269-40b607c67466">
                <property name="local_mesure_unity" value="cm"/>
                <property name="com.jaspersoft.studio.unit.y" value="cm"/>
                <property name="local_mesure_unitx" value="cm"/>
                <property name="com.jaspersoft.studio.unit.x" value="cm"/>
            </reportElement>
            <dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JRXmlDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("//idbfyl:fiscalYearReportLetter")]]></dataSourceExpression>
            <subreportExpression><![CDATA["FiscalYearReportLetter.jasper"]]></subreportExpression>
        </subreport>
    </band>
    <band height="83" splitType="Stretch">
        <break>
            <reportElement x="0" y="0" width="513" height="1" uuid="43e0cd6d-cc0b-4ce9-ae2f-0d8d2b498896"/>
        </break>
        <subreport>
            <reportElement positionType="Float" stretchType="RelativeToTallestObject" x="-56" y="-175" width="573" height="70" uuid="df524b80-9db1-43b7-9c45-3b8ea21c8081">
                <property name="local_mesure_unity" value="cm"/>
                <property name="com.jaspersoft.studio.unit.y" value="cm"/>
            </reportElement>
            <dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JRXmlDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("//idbfyvr:fiscalYearValueReport")]]></dataSourceExpression>
            <subreportExpression><![CDATA["FiscalYearValueReport.jasper"]]></subreportExpression>
        </subreport>
    </band>
    <band height="83" splitType="Stretch">
        <break>
            <reportElement x="0" y="0" width="513" height="1" uuid="bcddb440-2fdd-49c2-98cc-7978260c8d34"/>
        </break>
        <subreport>
            <reportElement positionType="Float" stretchType="RelativeToTallestObject" x="-56" y="-175" width="573" height="70" isRemoveLineWhenBlank="true" isPrintInFirstWholeBand="true" uuid="df524b80-9db1-43b7-9c45-3b8ea21c8081">
                <property name="local_mesure_unity" value="cm"/>
                <property name="com.jaspersoft.studio.unit.y" value="cm"/>
            </reportElement>
            <dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JRXmlDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("//ibdfyir:fiscalYearIncomeReport")]]></dataSourceExpression>
            <subreportExpression><![CDATA["FiscalYearIncomeReport.jasper"]]></subreportExpression>
        </subreport>
    </band>
</detail>

子报表的每个第一页都打印在正确的位置,但是在第一个页面之后的每个页面上打印子报表都在pageHeader下面,看起来负y坐标被重置为0.

Subreport start below the pageheader

有没有办法强制子报表的每个页面从相同的负y坐标开始,还是有另一种方法来实现我需要的东西?

干杯, 瑞克

PS。示例图片从第2页开始,因为第一个子报表仅包含1页。我还从截图中删除了敏感数据,因此不必担心您看到的空白区域。

1 个答案:

答案 0 :(得分:0)

我有类似的问题。尝试将pageNumber放在主报表的详细信息区域中,并将其标记为isPrintWhenDetailOverFlows,以便在子报表溢出时让pageNumber在所有页面上打印。