Отчет о яшме - как добавить звездочку в числовой код штрих-кода?

Я создан 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 ответа

Решение

Смотрите ** ОБНОВЛЕНИЕ ** раздел для правильного ответа.

Хитрость заключалась в том, чтобы установить для атрибута extendedCharSetEnabled значение true.

Я получил идею от следующих сайтов:

http://jasperforge.org/uploads/publish/jasperreportswebsite/trunk/components.schema.reference.html

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, так как звездочки не отображаются.

Вместо

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

попробуйте использовать

  <![CDATA['*'+$P{barCode}+'*']]>
Другие вопросы по тегам