1

我有一个 JasperReports 模板,其中包含一个 textField 元素,该元素将包含可变长度的字符串。如果字符串太长而无法适应宽度,则会将其拆分,除非字符串包含连字符或空格字符。在这种情况下,字符串是从该字符中拆分出来的。以下是输入、观察到的结果和想要的结果+摘要的一些示例,以使我的观点更容易理解。

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 来解决此问题,它将空格更改为不间断空格,将连字符更改为不间断连字符,前提是打印那些该死的不间断连字符。

顺便说一下,打印到 PDF,以防给出一些问题的提示。

4

2 回答 2

1

像这样在文本字段“表达式”中输入:

String.join("\uFEFF", $F{field1}.split("(?!^)"))
于 2018-01-31T02:10:07.887 回答
0

是字体问题。当字体支持时,不间断连字符可以正常工作(\u2011)。请参阅字体示例,了解除默认字体之外的加载方式(例如 DejaVu Sans)。

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

(将我自己的答案标记为正确,以便结束这个话题。)

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

于 2012-09-07T13:05:46.807 回答