2013-08-14 3 views
5

Я работаю над проектом, который создает счета-фактуры в формате PDF из XML-данных, выводимых другим программным обеспечением, и одним из требований этих счетов-фактур является создание штрих-кодов для некоторых из данные узла и поместить их в форму. В идеале штрих-коды будут генерироваться изнутри шаблона, а не для вызова другой программы для их создания, а затем шаблон попытается найти их как PNG или какой-либо другой формат изображения.Создание штрих-кодов в шаблоне для использования с Apache FOP

Я пробовал использовать расширение barcode4j, но без результатов.

<?xml version="1.0" encoding="UTF-8"?> 

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:barcode="http://barcode4j.krysalis.org/ns" font-size="10pt"> 
    <fo:layout-master-set> 
    <fo:simple-page-master master-name="master0" page-width="21.0cm" page-height="29.7cm" margin-top="0.0cm" margin-bottom="0.5cm" margin-left="0.5cm" margin-right="0.25cm"> 
     <fo:region-body region-name="body0" margin-top="0.5cm" margin-bottom="0.5cm"/> 
     <fo:region-before region-name="header0" extent="1.5cm"/> 
     <fo:region-after region-name="footer0" extent="1.89cm"/> 
    </fo:simple-page-master> 
    </fo:layout-master-set> 
    <fo:page-sequence master-reference="master0"> 
    <fo:flow flow-name="body0"> 
    <xsl:variable name="CheckMaster" select="count(master_bill_of_lading/details/orders/order)"/> 
    <xsl:variable name="country" select="master_bill_of_lading/header/Country"/> 

    <xsl:variable name="barcode-cfg"> 
     <barcode> 
      <code39> 
       <height>16mm</height> 
       <module-width>0.3mm</module-width> 
       <human-readable> 
        <placement>none</placement> 
       </human-readable> 
      </code39> 
     </barcode> 
     </xsl:variable> 

    <fo:block> 

<fo:instream-foreign-object> 
<xsl:variable name="bc" select="barcode:generate($barcode-cfg, 123456)" /> 
    <xsl:copy-of select="$bc" /> 
</fo:instream-foreign-object> 

...

Помимо попробовав это, любое решение, которое позволяет мне генерировать штрих-коды в шаблоне будет очень ценится , поскольку чрезвычайно сложно найти последовательные онлайн-ссылки на предполагаемые решения.

Edit: я был в состоянии решить эту проблему, используя расширение FOP barcode4j, которая требует только добавить включенные банки в путь и Lib папки внутри ФОП затем создать штрих-код, используя внутри фо: instream- блок инопланетных объектов

ответ

5

Большинство 1d штрих-кодов поддерживаются свободно доступными XSL-таблицами RenderX, которые обрабатывают штрих-код «на лету» в XSL до SVG. См. RenderX Barcode XSLs. Это включает в себя 3-х штрих-коды, которые показывают ваш пример.

0

Штрих-код - это всего лишь текст со специальным шрифтом. Получите шрифт TrueType для штрих-кода для нужного типа штрих-кода. И добавить шрифт штрих-кода в FOP в fop.xconf шрифтами разделе:

<font kerning="yes" embed-url="free3of9.ttf"> 
     <font-triplet name="barcode" style="normal" weight="normal"/> 
    </font> 

Используйте его в фо как:

<fo:block 
    font-family="barcode" 
    font-size="36pt" 
>*12345678*</fo:block><!-- YMMW with the * --> 

Это старый проект с использованием FOP 1.1, я предполагаю, что это должно быть похожими в более новых версиях FOP.