gpt4 book ai didi

jasper-reports - iReport 问题与 isStretchWithOverflow

转载 作者:行者123 更新时间:2023-12-02 03:56:54 33 4
gpt4 key购买 nike

目前,当文本字段中的内容太长时,我使用属性 isStretchWithOverflow 来换行。有用。但我想知道如何确定它断线的方式。

下面是我的 jrxml 文件的片段:

<textField isStretchWithOverflow="true">
<reportElement positionType="Float" width="150" height="20"/>
<box leftPadding="15">

</box>
<textFieldExpression><![CDATA[$F{content}]]></textFieldExpression>
</textField>

对于类似的内容

oh my god test="longstring" abcdefg hijk

我要将“longstring”视为一个词。所以我想象的输出是

oh my god test=
"longstring" abcdefg
hijk

但实际输出是

oh my god test="
longstring" abcdefg
hijk

另一个问题类似

原文内容为

abc.def/hij/k.lmnopqrstu

我要

abc.def/
hij/k.
lmnopqrstu

但实际输出是

abc.
def/hij/k.
lmnopqrstu

遇到“/”不换行

有什么办法可以做我想做的事吗?

最佳答案

net.sf.jasperreports.engine.fill.TextMeasurer 实现(net.sf.jasperreports.engine.fill.JRMeasuredText 接口(interface))类使用由私有(private) RuleBasedBreakIterator 类实现的 java.text.BreakIterator 接口(interface)。 RuleBasedBreakIterator 读取随 JDK 提供的文件,该文件定义要对其执行换行的字符。由于 RuleBasedBreakIterator 类是私有(private)的,因此我还没有找到更改默认行为的简单方法。通过修改以下属性,可以使用替代实现替换 net.sf.jasperreports.engine.fill.TextMeasurer:

#Default text measurer
net.sf.jasperreports.text.measurer.factory=default
net.sf.jasperreports.text.measurer.factory.default=net.sf.jasperreports.engine.fill.TextMeasurerFactory

这在实践中可能是不可取的,除非您可以使用自定义在 JDK 中实现强大的中断逻辑。

某些人的替代方案可能是使用不提供 ICU4J 的 IBM JDK,它提供了 RuleBasedBreakIterator 的可自定义实现,如下所述:

http://sujitpal.blogspot.com/2008/05/tokenizing-text-with-icu4js.html

关于jasper-reports - iReport 问题与 isStretchWithOverflow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12174751/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com