Отчет о яшме - как добавить звездочку в числовой код штрих-кода?
Я создан 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}+'*']]>