2013-08-14 8 views
5

Ich arbeite an einem Projekt, das Rechnungen im PDF-Format aus XML-Daten von einer anderen Software erzeugt, und eine der Anforderungen dieser Rechnungen besteht darin, Barcodes für einige von die Knotendaten und platziere sie im Formular. Im Idealfall würden die Barcodes aus der Vorlage generiert, anstatt ein anderes Programm aufzurufen, um sie zu generieren, und dann die Vorlage versuchen, sie als PNGs oder ein anderes Bildformat zu finden.Erstellen von Barcodes in einer Vorlage für die Verwendung mit Apache FOP

Ich habe versucht, die Erweiterung barcode4j, aber ohne Ergebnisse.

<?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> 

...

Abgesehen davon versucht zu haben, jede Lösung, die mir die Strichcodes in der Vorlage zu erzeugen, ermöglicht würde enorm geschätzt , da es äußerst schwierig ist, konsistente Online-Verweise auf angebliche Lösungen zu finden.

Edit: Ich war in der Lage, dieses Problem zu lösen, um die FOP Erweiterung barcode4j verwenden, die nur erfordert, dass Sie die mitgelieferten Gläser auf den Pfad und lib Ordner in FOP fügen Sie dann einen Strichcode erstellen innerhalb eines fo mit: instream- Fremdobjektblock

Antwort

5

Die meisten 1D-Barcodes werden von den frei verfügbaren XSL-Stylesheets von RenderX unterstützt, die einen Barcode im laufenden Betrieb in XSL nach SVG verarbeiten. Siehe RenderX Barcode XSLs. Dies beinhaltet 3 von 9 Barcodes, die Ihr Beispiel zeigt.

0

Barcodes sind nur Text mit einer speziellen Schriftart. Holen Sie sich eine TrueType-Barcode-Schriftart für den von Ihnen benötigten Barcode-Typ. Und die Barcode-Schriftart hinzufügen, in fop.xconf Schriftarten Abschnitt FOP:

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

Verwenden Sie in Ihrem fo wie:

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

Dies ist ein altes Projekt FOP mit 1.1, Ich vermute, es sollte in neueren Versionen von FOP ähnlich sein.

Verwandte Themen