Jasper Reports: как распечатать несколько страниц на одной странице

Я новичок в Jasper Reports. У меня есть отчет с 2 группами. В зависимости от запроса печатается несколько страниц.

Рост в 1-й группе — 95 баллов, рост во 2-й группе — 144 балла.

Я хочу, чтобы эти несколько страниц были напечатаны на одной странице (я хочу включить 5 страниц на страницу). Каждая высота страницы составляет 239 пунктов. (Даже если содержимое страницы меньше 239 баллов, я хочу оставить оставшуюся часть пустой и начать следующую страницу после 239 баллов). Я попытался создать отчет и включил вышеуказанный отчет в качестве подотчета и установил высоту основного отчета как 1195 (239 * 5) точек. Тем не менее, они печатаются на разных страницах.

Результат экспорта: Отчет выглядит так при печати

Структура основного отчета: Основной отчет — включает 2 подотчета

Дизайн первого подотчета: First SubReport

Дизайн второго подотчета: Second SubReport
Пожалуйста, помогите мне в этом.


person charishb4u    schedule 12.04.2012    source источник
comment
Можете выложить скриншот оформления вашего отчета в iReport?   -  person Alex K    schedule 12.04.2012
comment
@Alex, мне не разрешалось добавлять изображения. Пожалуйста, найдите ссылку для дизайна отчета _http://www.flickr.com/photos/78994541@N06   -  person charishb4u    schedule 12.04.2012


Ответы (1)


Я сделал тест на основе ваших спецификаций, и, похоже, он работает нормально. Я могу дать вам пару указаний здесь.

  1. В дизайне вашего основного отчета высота элемента подотчета не имеет значения, если она равна основной полосе. Если элемент подотчета короче, в результате появится разница.
  2. Высота страницы вложенного отчета не имеет значения, важна только общая высота полос.
  3. Убедитесь, что в созданных вами группах не выбран параметр «Начать с новой страницы». Это наиболее вероятная проблема.

Если первые 3 не помогли решить вашу проблему, просмотрите пример ниже и сравните различия.

Основной отчет:

<?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="MainReport1" language="groovy" pageWidth="595" pageHeight="1195" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="0" bottomMargin="0">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
        <defaultValueExpression><![CDATA["C:\\Users\\Bizz\\Documents\\JasperReports\\"]]></defaultValueExpression>
    </parameter>
    <queryString>
        <![CDATA[SELECT
     PRODUCT."ID" AS PRODUCT_ID,
     PRODUCT."NAME" AS PRODUCT_NAME,
     PRODUCT."COST" AS PRODUCT_COST
FROM
     "PUBLIC"."PRODUCT" PRODUCT]]>
    </queryString>
    <field name="PRODUCT_ID" class="java.lang.Integer"/>
    <field name="PRODUCT_NAME" class="java.lang.String"/>
    <field name="PRODUCT_COST" class="java.math.BigDecimal"/>
    <group name="Group1">
        <groupExpression><![CDATA[$F{PRODUCT_ID}]]></groupExpression>
        <groupHeader>
            <band height="50">
                <subreport>
                    <reportElement x="0" y="0" width="200" height="50"/>
                    <subreportParameter name="ProductID">
                        <subreportParameterExpression><![CDATA[$F{PRODUCT_ID}]]></subreportParameterExpression>
                    </subreportParameter>
                    <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
                    <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "MainReport1_subreport2.jasper"]]></subreportExpression>
                </subreport>
            </band>
        </groupHeader>
    </group>
    <group name="Group2">
        <groupExpression><![CDATA["2"]]></groupExpression>
        <groupHeader>
            <band height="50">
                <subreport>
                    <reportElement x="0" y="0" width="200" height="50"/>
                    <subreportParameter name="ProductID">
                        <subreportParameterExpression><![CDATA[$F{PRODUCT_ID}]]></subreportParameterExpression>
                    </subreportParameter>
                    <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
                    <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "MainReport1_subreport1.jasper"]]></subreportExpression>
                </subreport>
            </band>
        </groupHeader>
    </group>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band splitType="Stretch"/>
    </title>
    <pageHeader>
        <band splitType="Stretch"/>
    </pageHeader>
    <columnHeader>
        <band splitType="Stretch"/>
    </columnHeader>
    <detail>
        <band splitType="Stretch"/>
    </detail>
    <columnFooter>
        <band splitType="Stretch"/>
    </columnFooter>
    <pageFooter>
        <band splitType="Stretch"/>
    </pageFooter>
    <summary>
        <band splitType="Stretch"/>
    </summary>
</jasperReport>

Подотчет1:

<?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="MainReport1_subreport1" language="groovy" pageWidth="555" pageHeight="95" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <parameter name="ProductID" class="java.lang.Integer"/>
    <queryString>
        <![CDATA[SELECT
     PRODUCT."ID" AS PRODUCT_ID,
     PRODUCT."NAME" AS PRODUCT_NAME,
     PRODUCT."COST" AS PRODUCT_COST
FROM
     "PUBLIC"."PRODUCT" PRODUCT
where
  product_id = $P{ProductID}]]>
    </queryString>
    <field name="PRODUCT_ID" class="java.lang.Integer"/>
    <field name="PRODUCT_NAME" class="java.lang.String"/>
    <field name="PRODUCT_COST" class="java.math.BigDecimal"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band splitType="Stretch"/>
    </title>
    <pageHeader>
        <band splitType="Stretch"/>
    </pageHeader>
    <columnHeader>
        <band splitType="Stretch"/>
    </columnHeader>
    <detail>
        <band height="95" splitType="Stretch">
            <staticText>
                <reportElement x="0" y="0" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[PRODUCT_ID]]></text>
            </staticText>
            <textField>
                <reportElement x="100" y="0" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{PRODUCT_ID}]]></textFieldExpression>
            </textField>
            <staticText>
                <reportElement x="0" y="20" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[PRODUCT_NAME]]></text>
            </staticText>
            <textField>
                <reportElement x="100" y="20" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{PRODUCT_NAME}]]></textFieldExpression>
            </textField>
            <staticText>
                <reportElement x="0" y="40" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[PRODUCT_COST]]></text>
            </staticText>
            <textField>
                <reportElement x="100" y="40" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{PRODUCT_COST}]]></textFieldExpression>
            </textField>
            <componentElement>
                <reportElement x="0" y="60" width="200" height="35"/>
                <jr:barbecue xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" type="3of9" drawText="false" checksumRequired="false">
                    <jr:codeExpression><![CDATA[$F{PRODUCT_ID}]]></jr:codeExpression>
                </jr:barbecue>
            </componentElement>
        </band>
    </detail>
    <columnFooter>
        <band splitType="Stretch"/>
    </columnFooter>
    <pageFooter>
        <band splitType="Stretch"/>
    </pageFooter>
    <summary>
        <band splitType="Stretch"/>
    </summary>
</jasperReport>

Подотчет2:

<?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="MainReport1_subreport2" language="groovy" pageWidth="555" pageHeight="888" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <parameter name="ProductID" class="java.lang.Integer"/>
    <queryString>
        <![CDATA[SELECT
     PRODUCT."ID" AS PRODUCT_ID,
     PRODUCT."NAME" AS PRODUCT_NAME,
     PRODUCT."COST" AS PRODUCT_COST
FROM
     "PUBLIC"."PRODUCT" PRODUCT
where
  product_id = $P{ProductID}]]>
    </queryString>
    <field name="PRODUCT_ID" class="java.lang.Integer"/>
    <field name="PRODUCT_NAME" class="java.lang.String"/>
    <field name="PRODUCT_COST" class="java.math.BigDecimal"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band splitType="Stretch"/>
    </title>
    <pageHeader>
        <band splitType="Stretch"/>
    </pageHeader>
    <columnHeader>
        <band splitType="Stretch"/>
    </columnHeader>
    <detail>
        <band height="144" splitType="Stretch">
            <staticText>
                <reportElement x="0" y="0" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[PRODUCT_ID]]></text>
            </staticText>
            <textField>
                <reportElement x="100" y="0" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{PRODUCT_ID}]]></textFieldExpression>
            </textField>
            <staticText>
                <reportElement x="0" y="20" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[PRODUCT_NAME]]></text>
            </staticText>
            <textField>
                <reportElement x="100" y="20" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{PRODUCT_NAME}]]></textFieldExpression>
            </textField>
            <staticText>
                <reportElement x="0" y="40" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[PRODUCT_COST]]></text>
            </staticText>
            <textField>
                <reportElement x="100" y="40" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{PRODUCT_COST}]]></textFieldExpression>
            </textField>
            <componentElement>
                <reportElement x="0" y="60" width="302" height="84"/>
                <jr:barbecue xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" type="3of9" drawText="false" checksumRequired="false">
                    <jr:codeExpression><![CDATA[$F{PRODUCT_ID}]]></jr:codeExpression>
                </jr:barbecue>
            </componentElement>
        </band>
    </detail>
    <columnFooter>
        <band splitType="Stretch"/>
    </columnFooter>
    <pageFooter>
        <band splitType="Stretch"/>
    </pageFooter>
    <summary>
        <band splitType="Stretch"/>
    </summary>
</jasperReport>
person user845279    schedule 17.05.2012