Я использую последнюю версию Jasper Reports. Я использовал подробный раздел двух кадров Jasper Reports. Один кадр содержит все необходимые поля в нем и установлен на вершине = 0, второй кадр точно ниже первого и содержит только один файл. Когда текст в текстовых полях первого фрейма нормальный (умещается по ширине и не растягивается), результат нормальный, означает, что второй фрейм точно напечатан ниже первого. но если одно из текстовых полей растягивается, если содержимое над потоками, тогда между двумя кадрами остается некоторое пространство.
Я написал здесь XML моего подробного раздела.
<detail>
<band height="40" splitType="Stretch">
<frame>
<reportElement stretchType="RelativeToTallestObject" x="0" y="0" width="430" height="20" isPrintWhenDetailOverflows="true"/>
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="129" y="0" width="50" height="20"/>
<box leftPadding="1">
<pen lineWidth="1.0"/>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement>
<font size="9"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$F{netWeight}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="179" y="0" width="50" height="20"/>
<box leftPadding="1">
<pen lineWidth="1.0"/>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement>
<font size="9"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$F{metalRate}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="0" y="0" width="54" height="20"/>
<box leftPadding="1">
<pen lineWidth="1.0"/>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement>
<font size="9"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$F{productName}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="229" y="0" width="22" height="20"/>
<box leftPadding="1">
<pen lineWidth="1.0"/>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement>
<font size="9"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$F{ratePer}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="251" y="0" width="25" height="20"/>
<box leftPadding="1">
<pen lineWidth="1.0"/>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement>
<font size="9"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$F{ratePerUnit}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="364" y="0" width="66" height="20"/>
<box leftPadding="1">
<pen lineWidth="1.0"/>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement>
<font size="9"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$F{totalAmount}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="104" y="0" width="25" height="20"/>
<box leftPadding="1">
<pen lineWidth="1.0"/>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement>
<font size="9"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$F{piece}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="54" y="0" width="50" height="20"/>
<box leftPadding="1">
<pen lineWidth="1.0"/>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement>
<font size="9"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$F{itemName}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="320" y="0" width="44" height="20"/>
<box leftPadding="1">
<pen lineWidth="1.0"/>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement>
<font size="9"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$F{vatAmount}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="276" y="0" width="44" height="20"/>
<box leftPadding="1">
<pen lineWidth="1.0"/>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement>
<font size="9"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$F{labourAmount}]]></textFieldExpression>
</textField>
</frame>
<frame>
<reportElement x="0" y="20" width="430" height="20" isRemoveLineWhenBlank="true" isPrintWhenDetailOverflows="true">
<printWhenExpression><![CDATA[$F{narration} != null && (!$F{narration}.equals("NONE")) && $F{narration}.length > 0]]></printWhenExpression>
</reportElement>
<staticText>
<reportElement x="0" y="0" width="50" height="20"/>
<box leftPadding="1">
<pen lineWidth="1.0"/>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement>
<font size="9"/>
</textElement>
<text><![CDATA[Narration]]></text>
</staticText>
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement x="50" y="0" width="380" height="20" isPrintWhenDetailOverflows="true"/>
<box leftPadding="1">
<pen lineWidth="1.0"/>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement>
<font size="9"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$F{narration}]]></textFieldExpression>
</textField>
</frame>
</band>
</detail>