2013-08-14 14 views
5

Sto lavorando a un progetto che genera fatture in formato PDF dall'output di dati xml di un'altra parte di software e uno dei requisiti di queste fatture è di creare codici a barre per alcuni di i dati del nodo e posizionarli nel modulo. Idealmente, i codici a barre verrebbero generati dall'interno del modello, piuttosto che chiamare un altro programma per generarli e quindi fare in modo che il modello li trovi come PNG o in qualche altro formato di immagine.Generazione di codici a barre all'interno di un modello per l'utilizzo con Apache FOP

Ho provato a utilizzare l'estensione barcode4j, ma senza risultati.

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

...

A parte aver provato questo, qualsiasi soluzione che mi permette di generare i codici a barre all'interno del modello sarebbe enormemente apprezzato , poiché è estremamente difficile trovare riferimenti on-line coerenti a presunte soluzioni.

Edit: sono stato in grado di risolvere questo problema utilizzando l'estensione barcode4j FOP, che richiede solo di aggiungere i vasi incluse per il percorso e la cartella lib all'interno FOP quindi creare un codice a barre utilizza all'interno di un fo: instream- blocco oggetti estranei

risposta

5

La maggior parte dei codici a barre 1d è supportata dai fogli di stile XSL liberamente disponibili di RenderX che elaborano un codice a barre al volo in XSL in SVG. Vedi RenderX Barcode XSLs. Ciò include 3 di 9 codici a barre mostrati nell'esempio.

0

I codici a barre sono solo testo con un carattere speciale. Ottieni un font codice a barre TrueType per il tipo di codice a barre che ti serve. E aggiungere il tipo di carattere codice a barre per FOP nella sezione font fop.xconf:

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

utilizzarlo nella vostra fo come:

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

Si tratta di un vecchio progetto con FOP 1.1, sto cercando di indovinare Dovrebbe essere simile nelle versioni più recenti di FOP.

Problemi correlati