我目前正在使用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.
有没有办法强制子报表的每个页面从相同的负y坐标开始,还是有另一种方法来实现我需要的东西?
干杯, 瑞克
PS。示例图片从第2页开始,因为第一个子报表仅包含1页。我还从截图中删除了敏感数据,因此不必担心您看到的空白区域。
答案 0 :(得分:0)
我有类似的问题。尝试将pageNumber放在主报表的详细信息区域中,并将其标记为isPrintWhenDetailOverFlows,以便在子报表溢出时让pageNumber在所有页面上打印。