Jasper reports 如何分割大框架

Jasper reports 如何分割大框架,jasper-reports,Jasper Reports,我有一份jasper报告,上面有一个高度为1500px的细节带。我的页面高度是842px。在这个频带内有一个高度为940px的帧。 以下是我的jrxml文件: 编译后,我得到以下错误: The detail section, the page and column headers and footers and the margins do not fit the page height. --- net.sf.jasperreports.engine.design.JasperDesign

我有一份jasper报告,上面有一个高度为1500px的细节带。我的页面高度是842px。在这个频带内有一个高度为940px的帧。 以下是我的jrxml文件:


编译后,我得到以下错误:

The detail section, the page and column headers and footers and the margins do not fit the page height. --- net.sf.jasperreports.engine.design.JasperDesign
我的第一个问题是:为什么我会得到这个异常

如果将详图标注栏的拆分类型更改为“立即”,则不再出现上述错误。几分钟后,我摆脱了记忆错误。 我的第三个问题:为什么在将拆分类型更改为“立即”后会出现此错误


我的第三个问题是:如何在下一页的顶部将帧拆分为772px(在StaticText之后)和168px?我希望一个接一个地显示多个帧(具有不同的高度;其中一些帧非常长)。

您必须将模板大小更改为您的高度 页面大小->页面高度

请尝试以下代码:

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Template" pageWidth="595" pageHeight="1600" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
    <property name="ireport.zoom" value="1.610510000000001"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <detail>
        <band height="1500" splitType="Stretch">
            <frame>
                <reportElement positionType="Float" stretchType="RelativeToTallestObject" mode="Opaque" x="0" y="30" width="555" height="940" backcolor="#F5F9FF">
                    <property name="com.jaspersoft.studio.unit.width" value="pixel"/>
                </reportElement>
                <box>
                    <pen lineWidth="1.0" lineStyle="Solid" lineColor="#E3E3E3"/>
                </box>
            </frame>
            <staticText>
                <reportElement x="0" y="0" width="555" height="30"/>
                <textElement/>
                <text><![CDATA[
          Static Text
        ]]></text>
            </staticText>
        </band>
    </detail>
</jasperReport>

如果拆分页面,您可以使用:

<break><reportElement x="0" y="10" width="100" height="1"/></break>

报告中的分页符:

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Template" pageWidth="595" pageHeight="1600" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
    <property name="ireport.zoom" value="1.610510000000001"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <detail>
        <band height="1500" splitType="Stretch">
            <frame>
                <reportElement positionType="Float" stretchType="RelativeToTallestObject" mode="Opaque" x="0" y="84" width="555" height="886" backcolor="#F5F9FF">
                    <property name="com.jaspersoft.studio.unit.width" value="pixel"/>
                </reportElement>
                <box>
                    <pen lineWidth="1.0" lineStyle="Solid" lineColor="#E3E3E3"/>
                </box>
            </frame>
            <staticText>
                <reportElement x="0" y="0" width="555" height="30"/>
                <textElement/>
                <text><![CDATA[firtst page]]></text>
            </staticText>
            <staticText>
                <reportElement x="0" y="43" width="555" height="30"/>
                <textElement/>
                <text><![CDATA[next page]]></text>
            </staticText>
            <break>
                <reportElement x="0" y="33" width="100" height="1"/>
            </break>
        </band>
    </detail>
</jasperReport>

您必须将模板大小更改为您的高度 页面大小->页面高度

请尝试以下代码:

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Template" pageWidth="595" pageHeight="1600" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
    <property name="ireport.zoom" value="1.610510000000001"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <detail>
        <band height="1500" splitType="Stretch">
            <frame>
                <reportElement positionType="Float" stretchType="RelativeToTallestObject" mode="Opaque" x="0" y="30" width="555" height="940" backcolor="#F5F9FF">
                    <property name="com.jaspersoft.studio.unit.width" value="pixel"/>
                </reportElement>
                <box>
                    <pen lineWidth="1.0" lineStyle="Solid" lineColor="#E3E3E3"/>
                </box>
            </frame>
            <staticText>
                <reportElement x="0" y="0" width="555" height="30"/>
                <textElement/>
                <text><![CDATA[
          Static Text
        ]]></text>
            </staticText>
        </band>
    </detail>
</jasperReport>

如果拆分页面,您可以使用:

<break><reportElement x="0" y="10" width="100" height="1"/></break>

报告中的分页符:

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Template" pageWidth="595" pageHeight="1600" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
    <property name="ireport.zoom" value="1.610510000000001"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <detail>
        <band height="1500" splitType="Stretch">
            <frame>
                <reportElement positionType="Float" stretchType="RelativeToTallestObject" mode="Opaque" x="0" y="84" width="555" height="886" backcolor="#F5F9FF">
                    <property name="com.jaspersoft.studio.unit.width" value="pixel"/>
                </reportElement>
                <box>
                    <pen lineWidth="1.0" lineStyle="Solid" lineColor="#E3E3E3"/>
                </box>
            </frame>
            <staticText>
                <reportElement x="0" y="0" width="555" height="30"/>
                <textElement/>
                <text><![CDATA[firtst page]]></text>
            </staticText>
            <staticText>
                <reportElement x="0" y="43" width="555" height="30"/>
                <textElement/>
                <text><![CDATA[next page]]></text>
            </staticText>
            <break>
                <reportElement x="0" y="33" width="100" height="1"/>
            </break>
        </band>
    </detail>
</jasperReport>



细节栏的高度大于报表的pageHeight:1500>(842-40),其中40是两个边距的总和
,几分钟后我就摆脱了记忆错误。
-这是JSS的一个bug
如何将我的框架拆分为772px(静态文本之后)下一页顶部的168px?
-您可以使用pagenbreak和多个细节条带,但如果我将细节条带的高度更改为802,则我的大框架将不适合它,并且我将得到“警告:元素底部到达带区外:y=30高度=940带高度=802”。这就是为什么我把带宽设置为1500px。分页符和多个细节栏是否是唯一可以依次显示多个块(例如帧(具有不同高度))的方法?此时,我可以计算帧的所需高度(取决于将放入该块/帧中的元素)和细节栏的所需高度(块/帧的数量+边距)动态地基于一些外部信息。当:frameHeight<(pageHeight-marginTop-marginBottom)时没有问题。细节波段总是比802更大。这就行了。只有当frameHeight>时(pageHeight-marginTop-marginBottom),问题才会出现。在我的情况下,框架是否有任何拆分选项?细节栏的高度大于报表的pageHeight:1500>(842-40),其中40是几分钟后我从MemoryError中取出的两个页边距之和。-这是JSS的一个bug
如何将框架拆分为772px(在StaticText之后)下一页顶部的168px?
-您可以使用pagenbreak和多个细节条带,但如果我将细节条带的高度更改为802,则我的大框架将不适合它,并且我将得到“警告:元素底部到达带区外:y=30高度=940带高度=802”。这就是为什么我把带宽设置为1500px。分页符和多个细节栏是否是唯一可以依次显示多个块(例如帧(具有不同高度))的方法?此时,我可以计算帧的所需高度(取决于将放入该块/帧中的元素)和细节栏的所需高度(块/帧的数量+边距)动态地基于一些外部信息。当:frameHeight<(pageHeight-marginTop-marginBottom)时没有问题。细节波段总是比802更大。这就行了。只有当frameHeight>时(pageHeight-marginTop-marginBottom),问题才会出现。在我的情况下,框架是否有拆分选项?什么是
模板大小
?因为您的详细标注栏高度为1500px,页面高度为842px,但页面高度必须大于标注栏高度。在ireport中,此设置位于模板属性中。@user3782729:这不是我想要的。我的书页的高度必须是842。我想在842高的页面上一个接一个地显示多个块,例如帧(具有不同的高度;其中一些非常长)。@user3782729:您能在我的示例中演示如何使用-Element吗?@user3782729:谢谢。但正如我所写,我的页面高度必须是842px。什么是
模板大小
?因为您的详细栏高为1500px,页面高度为842px,但页面高度必须大于栏高。在ireport中,此设置位于templ中