我有一个JasperReports模板,其中包含一个textField元素,该元素将包含一个可变长度的字符串。如果字符串太长而不适合宽度,那么它将被拆分,除非字符串包含连字符或空格字符,否则很好。在这种情况下,字符串将从该char中拆分。以下是输入,观察结果和想要的结果+总结的一些示例,以使我的观点更容易理解。
input observed wanted summary
_____________________________________
overflow -> overfl -> overfl : OK
over flow -> over -> over f : NOT OK
over-flow -> over- -> over-f : NOT OK
将reportElement设置为isStretchWithOverflow =“true”属性会将文本拆分为两行,但这不是行为。
有没有解决这个问题?
感谢。
编辑:输入数据来自外部源,因此无法直接更改。我进行了一些测试,发现使用不间断的空间可以用于空间。另一方面,不打印连字符根本不打印,即文本“溢出”变为“溢出”。不完全是想要的。
尽管输入源不在我的控制范围内,但是我可以通过编写一个Scriptlet来解决这个问题,该Scriptlet将空格更改为不间断空格,连字符更改为非断开连字符,只有当这些非破坏连字符打印出来时才会打印出来
顺便打印到PDF,以防出现问题的提示。
答案 0 :(得分:0)
这是一个字体问题。当字体支持时,非破坏连字符(\ u2011)很好用。请参阅字体示例,了解除默认字体之外的其他负载(例如DejaVu Sans)。
如果有人比Scriptlet有更好的输入源修改选项,请告诉我。
(将我自己的答案标记为正确,以便关闭此主题。)
编辑:必须等待两天才能将此答案标记为正确。
答案 1 :(得分:0)
在文本字段中输入''Expression'',如下所示:
String.join("\uFEFF", $F{field1}.split("(?!^)"))