JasperReports 6.12.2 中的文本字段动态高度

Text Field dynamic height in JasperReports 6.12.2

我目前正在 API 工作,它将生成报告(使用 JasperReports 6.12.2),在这种情况下,我必须在文本字段中打印一个大字符串,问题是我可以' 为该元素提供适当的行为以将高度调整为字符串大小。

我之前一直在搜索,我发现的都是关于 属性 isStretchWithOverflow="true",但对我不起作用,因为在我的版本中,这已被弃用并且替换为 textAdjust="StretchHeight" 所以基本上所有结果都以相同的方式结束,文本被文本字段剪切。

注意:另外我不得不说,这种动态的必要性是因为我需要对报告进行分页。

  1. 元素文本字段 JRXML 代码:
<textField textAdjust="StretchHeight">
    <reportElement positionType="Float" stretchType="RelativeToBandHeight" x="0" y="190" width="555" height="321" isPrintWhenDetailOverflows="true"/>
    <textFieldExpression><![CDATA[$P{text}]]></textFieldExpression>
</textField>
  1. 完整的波段详细信息 JRXML 代码:

    <detail>
    <band height="802" splitType="Stretch">
        <textField>
            <reportElement x="0" y="40" width="140" height="20" uuid="8e0ef27f-45c4-45f5-8c36-93e126db95db"/>
            <textElement>
                <font fontName="SansSerif" size="11" isBold="true"/>
            </textElement>
            <textFieldExpression><![CDATA[$R{respuesta.cuerpo.codigo}]]></textFieldExpression>
        </textField>
        <textField>
            <reportElement x="0" y="60" width="140" height="20" uuid="6cfe8e0b-0b7d-47f5-be4e-4c94d7f19fac"/>
            <textElement>
                <font fontName="SansSerif" size="11" isBold="true"/>
            </textElement>
            <textFieldExpression><![CDATA[$R{respuesta.cuerpo.fecha}]]></textFieldExpression>
        </textField>
        <textField>
            <reportElement x="0" y="80" width="140" height="20" uuid="c8508fc6-3b17-4bcc-a207-2a9beff32263"/>
            <textElement>
                <font fontName="SansSerif" size="11" isBold="true"/>
            </textElement>
            <textFieldExpression><![CDATA[$R{respuesta.cuerpo.enviado}]]></textFieldExpression>
        </textField>
        <textField>
            <reportElement x="0" y="100" width="140" height="20" uuid="5f7c732e-aeee-4896-bf11-dbd8f2c2b02f"/>
            <textElement>
                <font fontName="SansSerif" size="11" isBold="true"/>
            </textElement>
            <textFieldExpression><![CDATA[$R{respuesta.cuerpo.asunto}]]></textFieldExpression>
        </textField>
        <textField>
            <reportElement x="0" y="120" width="140" height="20" uuid="71f51ac1-63c5-4abb-909a-3f31b14e0e80"/>
            <textElement>
                <font fontName="SansSerif" size="11" isBold="true"/>
            </textElement>
            <textFieldExpression><![CDATA[$R{respuesta.cuerpo.canal}]]></textFieldExpression>
        </textField>
        <textField>
            <reportElement x="0" y="140" width="140" height="20" uuid="00e9ac8d-c331-429d-944a-240e6abf2107"/>
            <textElement>
                <font fontName="SansSerif" size="11" isBold="true"/>
            </textElement>
            <textFieldExpression><![CDATA[$R{respuesta.cuerpo.nombre}]]></textFieldExpression>
        </textField>
        <textField>
            <reportElement x="0" y="160" width="140" height="20" uuid="4b22fdfb-36a3-41da-86d1-a527ca67667d"/>
            <textElement>
                <font fontName="SansSerif" size="11" isBold="true"/>
            </textElement>
            <textFieldExpression><![CDATA[$R{respuesta.cuerpo.texto}]]></textFieldExpression>
        </textField>
        <textField>
            <reportElement x="150" y="40" width="405" height="20" uuid="bc346e06-c225-4451-bde7-67bde39d402e"/>
            <textElement>
                <font fontName="SansSerif" size="11"/>
            </textElement>
            <textFieldExpression><![CDATA[$P{codigo}]]></textFieldExpression>
        </textField>
        <textField>
            <reportElement x="150" y="60" width="405" height="20" uuid="1d0ac2a4-fcb9-4ad3-9d9d-db440ae5cfb3"/>
            <textElement>
                <font fontName="SansSerif" size="11"/>
            </textElement>
            <textFieldExpression><![CDATA[new SimpleDateFormat("dd/MM/yyyy hh:mm:ss").format( new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse($P{fAlta}))]]></textFieldExpression>
        </textField>
        <textField>
            <reportElement x="150" y="80" width="405" height="20" uuid="d0189a13-4ded-45a1-82ad-5896a50f7fbf"/>
            <textElement>
                <font fontName="SansSerif" size="11"/>
            </textElement>
            <textFieldExpression><![CDATA[$P{mailPara}]]></textFieldExpression>
        </textField>
        <textField>
            <reportElement x="150" y="100" width="405" height="20" uuid="b0cfff7f-9230-4351-a59c-bf550fc4f0c2"/>
            <textElement>
                <font fontName="SansSerif" size="11"/>
            </textElement>
            <textFieldExpression><![CDATA[$P{asunto}]]></textFieldExpression>
        </textField>
        <textField>
            <reportElement x="150" y="140" width="405" height="20" uuid="15f48c57-404d-47e2-94a9-26da75054aa9"/>
            <textElement>
                <font fontName="SansSerif" size="11"/>
            </textElement>
            <textFieldExpression><![CDATA[$P{operador}]]></textFieldExpression>
        </textField>
        <staticText>
            <reportElement x="150" y="120" width="405" height="20" uuid="0926440c-f596-47a4-b7b4-674faa82b407"/>
            <textElement>
                <font fontName="SansSerif" size="11"/>
            </textElement>
            <text><![CDATA[Operador ATC]]></text>
        </staticText>
        <textField>
            <reportElement x="0" y="20" width="140" height="20" uuid="664930ad-64a1-44fc-9cdb-4ef34eb7cffa"/>
            <textElement>
                <font fontName="SansSerif" size="11" isBold="true"/>
            </textElement>
            <textFieldExpression><![CDATA[$R{respuesta.cuerpo.idPeticionATC}]]></textFieldExpression>
        </textField>
        <textField>
            <reportElement x="150" y="20" width="405" height="20" uuid="d9303c25-1ea8-45ca-b4b7-984a0b95d4ee"/>
            <textElement>
                <font fontName="SansSerif" size="11"/>
            </textElement>
            <textFieldExpression><![CDATA[$P{idPeticionATC}]]></textFieldExpression>
        </textField>
        <textField textAdjust="StretchHeight">
            <reportElement positionType="Float" stretchType="RelativeToBandHeight" x="0" y="190" width="555" height="321" isPrintWhenDetailOverflows="true" uuid="0e59dd92-0a62-453a-9167-6a9d5b43ff54"/>
            <textFieldExpression><![CDATA[$P{text}]]></textFieldExpression>
        </textField>
    </band>
    

尝试解决这个问题一段时间后,我找到了问题所在。

近期Jasper Reports将版本升级到v6.11(发布时间:2019-Dec-12),在该版本中Jaspersoft® Studio将属性 isstretchwithoverflow替换为textAdjust, 所以问题与版本有关,我意识到我的 Jasper 报告库是旧版本 v6.2,其中属性 textAdjust 甚至不存在。

因此,如果其他人遇到此问题,请检查您的库版本,如果它低于 6.11 版本并且您的编辑器插件是 6.11 或更高版本,您将无法正确溢出文本和分页。

属性 isStretchWithOverflow 在 JasperReports 库 6.10.0 中被 textAdjust 属性 取代。所以要实现动态拉伸效果,需要设置textAdjust="StretchHeight".

如果您在 Jaspersoft Studio 中设置兼容性设置(“Window > 首选项 > Jaspersoft Studio > 兼容性”),它会自动将 属性 更改为兼容版本,即 [=当您 select 版本 <= JasperReports 6.5.1.

时,12=] 将自动换成 isStretchWithOverflow="true"