JasperReports, включая пустую страницу в конце PDF

Я создаю PDF-файл, используя JasperReports из Java. Наконец-то мне удалось заставить Джаспера правильно разбить отчет на страницы. Проблема в том, что теперь я получаю пустую страницу в конце отчета (заголовки печатаются, но полоса детализации пуста). Вся информация, переданная для бэнда деталей, отображается, поэтому эта страница не нужна (более того, в конце последней страницы есть пустое место). Я прикреплю JXML в конце вопроса, любая помощь приветствуется.

Спасибо!

Это содержимое файла JXML:

 <?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="tintoreria" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" isFloatColumnFooter="true">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="288"/>
    <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
        <defaultValueExpression><![CDATA["C:\\work\\REPO-CTK\\lasastra-world\\core\\src\\main\\resources\\jasper\\tintoreria\\"]]></defaultValueExpression>
    </parameter>
    <parameter name="totalItems" class="java.lang.String"/>
    <parameter name="nroPag" class="java.lang.String"/>
    <parameter name="totalPag" class="java.lang.String"/>
    <parameter name="supplier" class="java.lang.String"/>
    <parameter name="creationDate" class="java.lang.String"/>
    <parameter name="orderNumber" class="java.lang.String"/>
    <parameter name="fechaPedido" class="java.lang.String"/>
    <parameter name="datasourceParam" class="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource"/>
    <queryString>
        <![CDATA[]]>
    </queryString>
    <pageHeader>
        <band height="119" splitType="Stretch">
            <rectangle radius="10">
                <reportElement x="0" y="0" width="555" height="119" backcolor="#CCCCFF"/>
                <graphicElement>
                    <pen lineWidth="1.75"/>
                </graphicElement>
            </rectangle>
            <staticText>
                <reportElement x="112" y="7" width="241" height="32"/>
                <textElement>
                    <font size="24" isBold="true" isUnderline="true"/>
                </textElement>
                <text><![CDATA[Orden de compra]]></text>
            </staticText>
            <staticText>
                <reportElement x="286" y="62" width="63" height="20"/>
                <textElement>
                    <font size="12"/>
                </textElement>
                <text><![CDATA[Proveedor:]]></text>
            </staticText>
            <textField>
                <reportElement x="355" y="62" width="189" height="20"/>
                <textElement>
                    <font size="12"/>
                </textElement>
                <textFieldExpression><![CDATA[$P{supplier}]]></textFieldExpression>
            </textField>
            <staticText>
                <reportElement x="281" y="42" width="72" height="20"/>
                <textElement>
                    <font size="12"/>
                </textElement>
                <text><![CDATA[Orden Nro:]]></text>
            </staticText>
            <textField>
                <reportElement x="355" y="42" width="189" height="20"/>
                <textElement>
                    <font size="12"/>
                </textElement>
                <textFieldExpression><![CDATA[$P{orderNumber}]]></textFieldExpression>
            </textField>
            <staticText>
                <reportElement x="268" y="83" width="85" height="20"/>
                <textElement>
                    <font size="12"/>
                </textElement>
                <text><![CDATA[Fecha Pedido:]]></text>
            </staticText>
            <textField>
                <reportElement x="355" y="83" width="189" height="20"/>
                <textElement>
                    <font size="12"/>
                </textElement>
                <textFieldExpression><![CDATA[$P{creationDate}]]></textFieldExpression>
            </textField>
        </band>
    </pageHeader>
    <detail>
        <band height="633" splitType="Stretch">
            <subreport runToBottom="false">
                <reportElement positionType="Float" stretchType="RelativeToBandHeight" mode="Transparent" x="0" y="0" width="555" height="633" isRemoveLineWhenBlank="true" isPrintInFirstWholeBand="true"/>
                <dataSourceExpression><![CDATA[$P{datasourceParam}]]></dataSourceExpression>
                <subreportExpression><![CDATA["purchaseorder_subreport1.jasper"]]></subreportExpression>
            </subreport>
        </band>
    </detail>
    <pageFooter>
        <band height="50" splitType="Stretch">
            <rectangle radius="10">
                <reportElement positionType="Float" x="0" y="0" width="555" height="50" backcolor="#CCCCFF"/>
                <graphicElement>
                    <pen lineWidth="1.75"/>
                </graphicElement>
            </rectangle>
            <textField>
                <reportElement positionType="Float" x="22" y="15" width="239" height="20"/>
                <textElement>
                    <font size="13"/>
                </textElement>
                <textFieldExpression><![CDATA["Cantidad de items: " + $P{totalItems}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="331" y="25" width="159" height="20"/>
                <textElement textAlignment="Right"/>
                <textFieldExpression><![CDATA["Pagina  "+$V{PAGE_NUMBER}+" de "]]></textFieldExpression>
            </textField>
            <textField evaluationTime="Report">
                <reportElement x="490" y="25" width="40" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression>
            </textField>
        </band>
    </pageFooter>
</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="tintoreria_subreport1" pageWidth="540" pageHeight="600" whenNoDataType="NoDataSection" columnWidth="540" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" isFloatColumnFooter="true" whenResourceMissingType="Empty">
    <property name="ireport.zoom" value="1.5394743546921208"/>
    <property name="ireport.x" value="131"/>
    <property name="ireport.y" value="0"/>
    <queryString>
        <![CDATA[]]>
    </queryString>
    <field name="itemNumber" class="java.lang.String"/>
    <field name="description" class="java.lang.String"/>
    <field name="amount" class="java.lang.String"/>
    <columnHeader>
        <band height="22" splitType="Stretch">
            <staticText>
                <reportElement x="1" y="1" width="68" height="20"/>
                <textElement>
                    <font size="12" isBold="true"/>
                </textElement>
                <text><![CDATA[Item]]></text>
            </staticText>
            <staticText>
                <reportElement x="76" y="1" width="373" height="20"/>
                <textElement>
                    <font size="12" isBold="true"/>
                </textElement>
                <text><![CDATA[   Descripción]]></text>
            </staticText>
            <line>
                <reportElement x="69" y="1" width="1" height="21"/>
            </line>
            <line>
                <reportElement x="0" y="21" width="540" height="1"/>
            </line>
            <line>
                <reportElement x="448" y="0" width="1" height="21"/>
            </line>
            <staticText>
                <reportElement x="453" y="1" width="68" height="20"/>
                <textElement>
                    <font size="12" isBold="true"/>
                </textElement>
                <text><![CDATA[Cantidad]]></text>
            </staticText>
        </band>
    </columnHeader>
    <detail>
        <band height="13" splitType="Stretch">
            <textField>
                <reportElement x="1" y="0" width="68" height="12"/>
                <textElement>
                    <font size="9"/>
                </textElement>
                <textFieldExpression><![CDATA[$F{itemNumber}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="77" y="0" width="371" height="12"/>
                <textElement>
                    <font size="9"/>
                </textElement>
                <textFieldExpression><![CDATA[$F{description}]]></textFieldExpression>
            </textField>
            <line>
                <reportElement x="69" y="0" width="1" height="13"/>
            </line>
            <line>
                <reportElement x="448" y="0" width="1" height="13"/>
            </line>
            <textField>
                <reportElement x="453" y="1" width="75" height="12"/>
                <textElement>
                    <font size="9"/>
                </textElement>
                <textFieldExpression><![CDATA[$F{amount}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

person LeanDe    schedule 11.01.2012    source источник
comment
вам когда-нибудь удавалось решить эту проблему?   -  person gordonk    schedule 26.02.2014


Ответы (3)


Вы должны вручную скрыть полосы после Detail.
Например, попробуйте скрыть полосу Summary, установив для нее Print When Expression значение Boolean.FALSE.

<summary>
     <band height="1" splitType="Stretch">
           <printWhenExpression><![CDATA[Boolean.FALSE]]></printWhenExpression>
     </band>
</summary>

Примечание: не уверен в точном контексте XML, так как обычно делаю это в iReport.

person medopal    schedule 12.01.2012
comment
Спасибо за ответ. Я удалил все бэнды из документа в iReport и оставил только Верхний колонтитул страницы, Детали и Нижний колонтитул страницы. А в подотчете только Column Header и Detail, так что не думаю, что это должно решить проблему, но попробую. - person LeanDe; 12.01.2012
comment
Это действительно решило мою проблему, когда я получал ложные дополнительные страницы в некоторых моих отчетах (и подотчетах). - person Doug; 04.04.2014
comment
Это решает проблему, но также не отображает страницу, если данные там присутствуют. Как проверить, существуют ли данные? - person zygimantus; 14.10.2016

Я столкнулся с этой проблемой, в моем случае она решается:

  1. Перейдите в Свойства отчета.
  2. Затем установите флажок «Игнорировать разбиение на страницы».

Вот и все. Я надеюсь, что это помогает.

person Hanady    schedule 15.06.2017
comment
У меня тоже сработало, в моем случае у меня была только полоса заголовка со списком, который почему-то печатал лишнюю страницу - person diedu; 16.11.2018
comment
Хотя этот подход решает проблему с дополнительной пустой страницей, я заметил недостаток: если высота содержимого выходит за пределы назначенной высоты страницы, страница просто становится длиннее. Это может быть проблемой, если отчет предназначен для печати на стандартной бумаге (A4, Letter и т. д.). - person AlisaDu; 26.11.2019
comment
Это следует использовать, когда отчет предназначен для печати на сплошной бумаге. Это не правильное решение. - person jpangamarca; 01.07.2021

Эта проблема может быть связана с пустым пространством в отчете. В яшме есть настройка, если вы щелкнете правой кнопкой мыши по полосе, она говорит: «Растянуть до содержимого», щелкните по ней.

person Tim Ndux    schedule 08.07.2020