JasperReports:防止textField在空格或连字符上分割

时间:2012-09-07 06:32:19

标签: jasper-reports

我有一个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,以防出现问题的提示。

2 个答案:

答案 0 :(得分:0)

这是一个字体问题。当字体支持时,非破坏连字符(\ u2011)很好用。请参阅字体示例,了解除默认字体之外的其他负载(例如DejaVu Sans)。

如果有人比Scriptlet有更好的输入源修改选项,请告诉我。

(将我自己的答案标记为正确,以便关闭此主题。)

编辑:必须等待两天才能将此答案标记为正确。

答案 1 :(得分:0)

在文本字段中输入''Expression'',如下所示:

String.join("\uFEFF", $F{field1}.split("(?!^)"))