有关有效答案,请参阅 **UPDATE** 部分。
诀窍是将extendedCharSetEnabled 属性设置为true。
我从以下网站得到了这个想法:
http://jasperforge.org/uploads/publish/jasperreportswebsite/trunk/components.schema.reference.html#_extendedCharSetEnabled
http://barcode4j.sourceforge.net/2.1/symbol-code39.html
所以整个条形码 xml 部分看起来像这样:
<componentElement>
<reportElement x="29" y="4" width="209" height="32"/>
<jr:Code39 xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd"
textPosition="bottom"
extendedCharSetEnabled="true">
<jr:codeExpression>
<![CDATA["*" + $P{barCode} + "*"]]>
</jr:codeExpression>
</jr:Code39>
</componentElement>
更新:
由于上述解决方案将在扫描时输出包含星号的条形码。
真正的解决方案是使用displayStartStop 属性并将其设置为 true。并从 CDATA 区域中删除星号连接。
<componentElement>
<reportElement x="29" y="4" width="209" height="32"/>
<jr:Code39 xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd"
textPosition="bottom"
displayStartStop="true">
<jr:codeExpression>
<![CDATA[$P{barCode}]]>
</jr:codeExpression>
</jr:Code39>
</componentElement>
笔记:
不要将 extendedCharSetEnabled 属性与 displayStartStop 一起使用,因为不会显示星号。