我使用jrxml
创建iReport
并使用barcode4j
生成条形码。
目标:
输出条形码,其数字值为星号。
如下所示。
||||||||||
*123456*
jrxml的条形码部分:
<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">
<jr:codeExpression>
<![CDATA["*" + $P{barCode} + "*"]]>
</jr:codeExpression>
</jr:Code39>
</componentElement>
上面的代码运行正常,但输出条形码没有星号。
所以看起来像:
|||||||||
123456
答案 0 :(得分:2)
诀窍是将 extendedCharSetEnabled属性设置为true。
我从以下网站获得了这个想法:
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>
注意:
不要将displayCharSetEnabled属性与displayStartStop一起使用,因为星号不会显示。
答案 1 :(得分:0)
而不是
<![CDATA["*" + $P{barCode} + "*"]]>
尝试使用
<![CDATA['*'+$P{barCode}+'*']]>