【问题标题】:How to achieve dynamic detail band height (depending on text length)?如何实现动态细节带高度(取决于文本长度)?
【发布时间】:2016-03-15 08:34:39
【问题描述】:

我在寻找解决方案时遇到了一些麻烦。

在我的报告中,我有一个子报告,其功能是打印与我正在打印的文档相关的人员的姓名和姓氏。

此子报表只有一个文本字段,其中姓名和姓氏是从Java 代码导入的。

问题是,每当姓名和姓氏太长而无法在一行中打印时,我必须在第二行中完成打印。

我尝试了两种方法来解决这个问题(请忽略其他字段,nameAndSurname 是相关的):

1. 两条线高度合适的单个细节带。

2. 双细节带。通过 Java 代码,我剪切了第二个姓氏并将其导入到第二个姓名和姓氏字段。第二个详细信息仅在条件 (nameAndSurnameTwo!=null) 为真时打印。


我还没有找到解决方案。问题是,无论是否打印第二行,detail band 都会占用第二行空间。

在简历中,我需要一个能根据我必须打印的姓名的长度动态改变其高度的带子。如果这些很短,只需一行。只有名字和姓氏的长度过长,才必须占两行空格。

【问题讨论】:

    标签: java jasper-reports


    【解决方案1】:

    这通常使用isStretchWithOverflow解决

    解决方案是使用:一条线具有适当高度的单个细节带。将 textField 上的属性设置为isStretchWithOverflow="true"

    示例

    <detail>
        <band height="20">
            <textField isStretchWithOverflow="true">
                <reportElement stretchType="RelativeToTallestObject" x="0" y="0" width="133" height="20" uuid="728a0280-ae29-425a-ab57-3ac78855de58"/>
                <textFieldExpression><![CDATA[$F{nameAndSurname}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
    

    我还建议在所有其他 textElements 上使用 stretchType="RelativeToTallestObject",以便在您的 textField 溢出时它们也可以拉伸。

    此外,如果您想强制拉伸,例如希望姓氏显示在第二行,只需添加\n 示例Petter\nFriberg 或使用html &lt;br/&gt; 将标记设置为html。

    【讨论】:

    • 谢谢皮特。很快就会试一试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-17
    • 2023-03-25
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    相关资源
    最近更新 更多