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

用jaspersoft在第二页打印带有负y坐标的子报表时出错

麻宾白
2023-03-14

我目前正在使用Jaspersoft Studio(版本5.6.2.final)创建PDF文档。我目前遇到了一个问题,我需要一些帮助。

我有一个主报告,其中包含3个子报告。每个子报告都是完整的文档,有它们自己的页眉、详细信息和(最后)页脚带。每个子报表都是在各自的详细信息带中创建的,带有pagebreak,因此每个子报表都在一个新的页面上开始。到目前为止没有任何问题。

现在,客户希望在文档中的特定位置上的每一页都有一个页码,这个位置对应于每个子报表标题的特定部分。见下图:

<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>

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

有没有办法强制子报表的每一页都从相同的负y坐标开始,或者有没有其他办法来实现我所需要的?

干杯,瑞克

共有1个答案

莫飞翮
2023-03-14

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

 类似资料:
  • 在主报表的细节部分,我创建了两个非常相同的子报表。我在主报表上指定了这两个子报表的高度为300像素,因此它们占据相等的空间,并在设计中一个接一个地显示为两个框。 子报表的设计如下所示。它的高度保持在300px。详细信息带根据从数据库返回的行数进行迭代。这可能返回3到8行。 现在,我希望在预览子报表时,如下图所示逐个显示子报表,其间没有任何空白。现在,当第一行只返回3行时,我看到它们之间有空白。如何

  • 我正在尝试使用带有子报表的主报表,而这个也带有子报表。我有一个Object列表,我将其作为JAVA的参数传递。当我打印Jasper时,只打印列表中的第一项,我不知道为什么(如果我只使用Master和一个子报表,它将打印所有对象并正确显示所有数据)。 代码是:JAVA(最相关的部分) JRXML大师 子报告 子子报表 请忽略jrxml的简单设计,我只是删除了不相关的信息。知道吗?

  • 我试图写一个函数,它以笛卡尔坐标系中的x和y值作为输入,并输出极坐标和三角坐标形式。我希望输出包含指数和正弦/余弦,而不是实际值。例如,如果笛卡尔函数是z=1i,我希望函数输出z=sqrt(2)e^(ipi/4)和z=sqrt(2)(cos(pi/4)Isin(pi/4)。我该怎么做? 函数坐标(x, y) r=sqrt(x.^2 y.^2); θ=atan(y./x); Polarcoord=r

  • 是否有任何缓存或某种设置在jasper或类似的东西?

  • 我的主报告中有一个子报告。这在细节栏中。问题是它只针对主报告的第一条记录运行。我希望它能为所有细节乐队的唱片播放。它不会显示在其他页面上。为了运行它,我传递了一个sql查询参数,该参数为详细信息带提供信息。 这是jrxml的主报告: 子报表 jrxml:

  • 假设我必须生成20个随机坐标,20个行号和20个列号。 有没有办法显示我存储在数组中的所有数字?尝试使用偏移,但没有成功。