gpt4 book ai didi

java - JasperReports 中的软连字符支持

转载 作者:行者123 更新时间:2023-11-30 07:47:12 25 4
gpt4 key购买 nike

问题:现有系统在 PDF 报告中打印用户输入的内容(以多种不同语言),在某些情况下最终会错误地断词,例如 "exampl-e" .

软连字符是一种特殊的隐形符号,放置在单词之间,当单词不合适并且必须被打破时,该符号会提示系统在哪里有意义进行打破。

如果用户输入 "exam<theMagicSymbol>ple"那么如果这个词被拆掉的话就会像 "examp-ple" .

问题:jasperReprots 中是否有现有的解决方案?

注意,我是这个库的新手,但我找不到任何接近软包装支持的东西......

最佳答案

最简单的方法是直接使用textFieldExpression (在您的示例中,在打印文本之前使用正则表达式 "<[^>]*>")es。

<textFieldExpression><![CDATA[$F{field1}.replaceAll("<[^>]*>", "")]]></textFieldExpression>

其他解决方案是:

关于碧 Jade textField您指定 markup="html"

示例:

<textField>
<reportElement x="0" y="4" width="100" height="20" uuid="2cfd9640-f7ce-4bbe-a024-7b1b53d3b72b"/>
<textElement markup="html">
<paragraph lineSpacing="Single"/>
</textElement>
<textFieldExpression><![CDATA[$F{field1}]]></textFieldExpression>
</textField>

这将像处理 html 一样处理文本,所有文本格式化代码都将像 es 一样工作。 <b>Test</b>将导致测试并且所有非文本格式代码将被删除(例如表,img ecc)。

最终解决方案

如果您仍然不满意,则需要更高级的代码来格式化文本,解决方案是您自己的类来格式化文本。

简单的例子:

<textField>
<reportElement x="0" y="4" width="100" height="20" uuid="2cfd9640-f7ce-4bbe-a024-7b1b53d3b72b"/>
<textElement markup="none">
<paragraph lineSpacing="Single"/>
</textElement>
<textFieldExpression><![CDATA[com.my.package.JasperReportTextHandler.format($F{field1})]]></textFieldExpression>
</textField>

创建java类JasperReportTextHandler包装中com.my.package使用静态方法:

class JasperReportTextHandler{
public static String format(String value){
//... do your stuff regEx, split...
return value;
}
}

只需确保JasperReportTextHandler当您执行报告时位于类路径中。

玩得开心

关于java - JasperReports 中的软连字符支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33751043/

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