最简单的方法是直接使用textFieldExpression(在您的示例中,在打印文本之前使用正则表达式"<[^>]*>")es。
<textFieldExpression><![CDATA[$F{field1}.replaceAll("<[^>]*>", "")]]></textFieldExpression>
其他解决方案有:
在碧玉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> 将导致它 Test 并且所有非文本格式代码将被删除(例如 table、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>
使用静态方法在包com.my.package中创建java类JasperReportTextHandler:
class JasperReportTextHandler{
public static String format(String value){
//... do your stuff regEx, split...
return value;
}
}
执行报告时,请确保 JasperReportTextHandler 在类路径中。
玩得开心