当前位置: 首页 > 知识库问答 >
问题:

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

仲君昊
2023-03-14

我目前正在使用一个将生成报告的API(使用JasperReports 6.12.2),在这种情况下,我必须在文本字段中打印一个大字符串,问题是我不能给这个元素赋予appiate行为来调整字符串大小的高度。

我以前一直在搜索询问,我找到的只是关于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>
<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>

共有1个答案

欧阳永宁
2023-03-14

在JasperReports库6.10.0中,IsStretchWithOverflow属性被TextAdjust属性替换。因此,要实现动态拉伸效果,需要设置textadjust=“stretchheight”

如果您在Jaspersoft Studio中相应地设置了兼容性设置(“窗口>首选项>Jaspersoft Studio>兼容性”),它将自动将属性更改为兼容版本,即当您选择一个版本<=JasperReports 6.5.1时,textAdjust=“StretchHeight”将自动替换为isStretchWithOverflow=“true”

 类似资料:
  • 在VAADIN组件中,用户可以选择插入一到N个问题答案。 初始:第一个答案应有一个文本字段,带有按钮(“添加另一个答案”) 按下按钮时,应为第二个答案添加一个新的文本字段,以此类推。。。 我的问题是,如何在按钮按下时实现新文本字段的动态加载? 我添加了一张我如何想象这个问题的图片。

  • 问题内容: 类似于下面的JSFiddle(我将其添加为书签,并且不知道原始问题来自何处): 有没有一种方法可以将文本字段的宽度固定为例如200px,如果用户添加的文本超过200px可以容纳的文本的 高度 ,文本字段的 高度 会增加吗?如果用户需要更多空间来键入内容,我希望添加更多行…因此我需要 height 而不是width来动态调整大小。 谢谢! 问题答案: 正如其他人解释的那样,字段不能包含多

  • 我有一个表单,它首先加载文本字段,并有一个与之关联的时间选择器。用户还可以单击“更多”按钮,该按钮动态加载下面的额外文本字段。这也有一个与之相关联的时间选择器,但是它不会加载到动态字段上。我正在使用Trent Richardson的jQuery timepicker插件http://trentrichardson.com/examples/timepicker 我还找到了以前的答案(https:/

  • 我创建了一个使用JTextPane的Swing界面。使用自定义颜色突出显示JTextPane: 用户还能够以普通的方式用光标突出显示文本。 而且

  • 我想调整子报表文本字段的大小(在包括到主报表之前),就像最高主报表的文本字段一样。 如您所见,子报表的文本字段的高度不相等。

  • 问题内容: 我想要有关一个字段值的其他字段。为此,我构建了一个自定义管理表单以添加一些新字段。 与jacobian 1的博客文章相关,这是我想出的: 但是其他字段“ foo”不会显示在管理员中。如果我像这样添加字段,则所有工作都很好,但没有按要求动态化,以添加有关模型的另一个字段的值的字段 那么,有没有我必须再次触发以使新字段起作用的初始化方法?还是有其他尝试? 问题答案: 这是解决问题的方法。感