如何实现动态细节带高度(取决于文本长度)?
How to achieve dynamic detail band height (depending on text length)?
我在寻找解决方案时遇到了一些问题。
在我的报表中,我有一个子报表,其功能是打印与我正在打印的文档相关的人员的姓名。
该子报表只有一个 文本字段,其中姓名和姓氏是从 Java 代码导入的。
问题是每当名字和姓氏太长无法在一行中打印时,我必须在第二行中打印完。
我尝试了两种方法来解决这个问题(请忽略其他字段,nameAndSurname 是相关的一种):
1. 具有适合两条线高度的单个细节带。
2. 双细节带。通过Java代码,我把二姓切下来导入到二姓字段中。第二个细节仅在条件 (nameAndSurnameTwo!=null
) 为真时打印。
我还没有找到解决方案。问题是,无论是否打印第二行,detail band 都会一直占用第二行 space。
在简历中,我需要的是一个 band,它可以根据我必须打印的名字和姓氏的长度动态改变它的高度。如果这些很短,只是一行。只是名字和姓氏的长度太长,必须占用两行spaces.
这通常可以通过使用 isStretchWithOverflow
来解决
解决方案是使用: 具有适合 one 行高度的单个细节带。将 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 <br/>
将标记设置为 html.
我在寻找解决方案时遇到了一些问题。
在我的报表中,我有一个子报表,其功能是打印与我正在打印的文档相关的人员的姓名。
该子报表只有一个 文本字段,其中姓名和姓氏是从 Java 代码导入的。
问题是每当名字和姓氏太长无法在一行中打印时,我必须在第二行中打印完。
我尝试了两种方法来解决这个问题(请忽略其他字段,nameAndSurname 是相关的一种):
1. 具有适合两条线高度的单个细节带。
2. 双细节带。通过Java代码,我把二姓切下来导入到二姓字段中。第二个细节仅在条件 (nameAndSurnameTwo!=null
) 为真时打印。
我还没有找到解决方案。问题是,无论是否打印第二行,detail band 都会一直占用第二行 space。
在简历中,我需要的是一个 band,它可以根据我必须打印的名字和姓氏的长度动态改变它的高度。如果这些很短,只是一行。只是名字和姓氏的长度太长,必须占用两行spaces.
这通常可以通过使用 isStretchWithOverflow
解决方案是使用: 具有适合 one 行高度的单个细节带。将 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 <br/>
将标记设置为 html.