バーコード関数

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  付録 > XSLT と XPath/XQuery 関数 > Altova 拡張関数
 >

バーコード関数

Altova XSLT エンジンはサードパーティー Java ライブラリを使用してバーコードを作成します。使用されるクラスや public メソッドを以下に記します。クラスは <ProgramFilesFolder>\Altova\Common2019\jar フォルダーにある AltovaBarcodeExtension.jar というパッケージに収められています。

 

使用される Java ライブラリは<ProgramFilesFolder>\Altova\Common2019\jar フォルダーのサブフォルダー以下に収められています :

 

barcode4j\barcode4j.jar  (ウェブサイト: http://barcode4j.sourceforge.net/)
zxing\core.jar  (ウェブサイト: http://code.google.com/p/zxing/)

 

それぞれのフォルダーにはライセンスファイルも収められています。

 

Java 仮想マシン

バーコード関数を使用するには、 Java 仮想マシンは使用中のマシンで使用することができます。マシンへのパスは以下で説明される通りです。

 

Altova デスクトップ製品を使用している場合、 Altova アプリケーションは、 Java 仮想マシンへのパスを(以下の順序で)読み取ることにより自動的に検知しようとします : (i) Windows レジストリ (ii) JAVA_HOME 環境変数。アプリケーションのオプションダイアログ内にカスタムパスを追加することもできます。 このエントリは自動的に検知された他の Java VM パス以上の優先順位を有します。
Altova サーバー製品が Windows マシン上で作動している場合、 the path to the Java 仮想マシンへのパスは Windows レジストリから最初に読み取られます。成功しない場合、 JAVA_HOME 環境変数が使用されます。
Altova サーバー製品を作動する場合、および、Linux または macOS マシン上でサーバー製品を作動する場合、Java 仮想マシンへのパスが JAVA_HOME 環境変数内に保管されていることを確認してください。\bin\server または \bin\client ディレクトリ内の jvm.dll ファイルを指している必要があります。

 

 

com.altova.extensions.barcode パッケージ

殆どの種類のバーコード生成には com.altova.extensions.barcode パッケージが使用されます。

 

 

以下のクラスが使用されます:

 

public class BarcodeWrapper

 static BarcodeWrapper newInstance( String name, String msg, int dpi, int orientation, BarcodePropertyWrapper[] arrProperties )

 double getHeightPlusQuiet()

 double getWidthPlusQuiet()

 org.w3c.dom.Document generateBarcodeSVG()

 byte[] generateBarcodePNG()

 String generateBarcodePngAsHexString()

 

public class BarcodePropertyWrapper 動的に使用されるバーコードプロパティを保管するために使用されます

 BarcodePropertyWrapper( String methodName, String propertyValue )

 BarcodePropertyWrapper( String methodName, Integer propertyValue )

 BarcodePropertyWrapper( String methodName, Double propertyValue )

 BarcodePropertyWrapper( String methodName, Boolean propertyValue )

 BarcodePropertyWrapper( String methodName, Character propertyValue )

 String getMethodName()

 Object getPropertyValue()

 

public class AltovaBarcodeClassResolver により、 org.krysalis.barcode4j.DefaultBarcodeClassResolver にて登録されたクラスに加え、 qrcode  に対して com.altova.extensions.barcode.proxy.zxing.QRCodeBean  クラスが登録されます。

 

 

com.altova.extensions.barcode.proxy.zxing パッケージ

QRCode バーコードの生成には com.altova.extensions.barcode.proxy.zxing パッケージが使用されます。

 

以下のクラスが使用されます:

 

class QRCodeBean

 

org.krysalis.barcode4j.impl.AbstractBarcodeBean を拡張します
com.google.zxing.qrcode.encoder に対して AbstractBarcodeBean インターフェースを作成します。

 

 void generateBarcode(CanvasProvider canvasImp, String msg)

 void setQRErrorCorrectionLevel(QRCodeErrorCorrectionLevel level)

 BarcodeDimension calcDimensions(String msg)

 double getVerticalQuietZone()

 double getBarWidth()

 

class QRCodeErrorCorrectionLevel QRCode に対するエラー訂正レベル

 static QRCodeErrorCorrectionLevel byName(String name)

 “L” = ~7% correction

 “M” = ~15% correction

 “H” = ~25% correction

 “Q” = ~30% correction

 

 

XSLT の例

以下に XSLT スタイルシートにてバーコード関数を使用する XSLT の例を示します

 

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

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
   xmlns:xs="http://www.w3.org/2001/XMLSchema" 
   xmlns:fn="http://www.w3.org/2005/xpath-functions" 
   xmlns:altova="http://www.altova.com" 
   xmlns:altovaext=”http://www.altova.com/xslt-extensions 
   xmlns:altovaext-barcode="java:com.altova.extensions.barcode.BarcodeWrapper" 
   xmlns:altovaext-barcode-property="java:com.altova.extensions.barcode.BarcodePropertyWrapper">

   <xsl:output method="html" encoding="UTF-8" indent="yes"/>

   <xsl:template match="/">

      <html>

         <head><title/></head>

         <body>

            <img alt="barcode" src="{altovaext:get-temp-folder()}barcode.png"/>

         </body>

      </html>

      <xsl:result-document 
         href="{altovaext:get-temp-folder()}barcode.png" 
         method="text" encoding="base64tobinary" >

         <xsl:variable name="barcodeObject" 
            select="altovaext-barcode:newInstance(&apos;Code39&apos;,string(&apos;some value&apos;), 
            96,0, (altovaext-barcode-property:new( &apos;setModuleWidth&apos;, 25.4 div 96 * 2 ) ) )"/>

         <xsl:value-of select="xs:base64Binary(xs:hexBinary(string(altovaext-barcode:generateBarcodePngAsHexString($barcodeObject)) ))"/>

      </xsl:result-document>

   </xsl:template>

</xsl:stylesheet>

 


(C) 2019 Altova GmbH