0

我是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
4

2 回答 2

2

有关有效答案,请参阅 **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 一起使用,因为不会显示星号。

于 2012-05-08T22:39:38.443 回答
0

代替

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

尝试使用

  <![CDATA['*'+$P{barCode}+'*']]>
于 2012-05-08T16:00:37.093 回答