jasper报告 - 如何在条形码数字输出中添加星号?

时间:2012-05-08 11:30:31

标签: java xml jasper-reports ireport barcode4j

我使用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

2 个答案:

答案 0 :(得分:2)

有关有效答案,请参阅**更新**部分。

诀窍是将 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>

注意:

不要将displayCharSetEnabled属性与displayStartStop一起使用,因为星号不会显示。

答案 1 :(得分:0)

而不是

  <![CDATA["*" + $P{barCode} + "*"]]>

尝试使用

  <![CDATA['*'+$P{barCode}+'*']]>