Funciones para códigos de barras
Los motores XSLT de Altova usan bibliotecas Java de terceros para crear códigos de barras. A continuación enumeramos las clases y los métodos públicos utilizados. Las clases se empaquetan en AltovaBarcodeExtension.jar, que está en la carpeta <CarpetaArchivosPrograma>\Altova\Common2023\jar.
Las bibliotecas Java utilizadas están en las subcarpetas de la carpeta <CarpetaArchivosPrograma>\Altova\Common2023\jar:
•barcode4j\barcode4j.jar (sitio web: http://barcode4j.sourceforge.net/)
•zxing\core.jar (sitio web: http://code.google.com/p/zxing/)
Los archivos de licencia están también en estas carpetas.
Equipo virtual Java
Para poder usar las funciones de códigos de barras debe existir un equipo virtual en su equipo. A continuación se describe cómo encontrar la ruta de acceso a ese equipo.
•si está usando un producto de escritorio de Altova, la aplicación intentará detectar automáticamente la ruta de acceso al equipo virtual Java; para ello leerá (en este orden): (i) el registro de Windows y (ii) la variable de entorno JAVA_HOME. También puede añadir una ruta personal en el cuadro de diálogo "Opciones" de la aplicación; esta ruta tendrá prioridad frente a cualquier otra ruta de acceso a un equipo virtual Java que se detecte automáticamente.
•si está usando un producto servidor de Altova en un equipo Windows, la ruta de acceso al equipo virtual Java se leerá primero desde el registro de Windows; si esto no ocurre se usa la variable de entorno JAVA_HOME.
•si está usando un producto servidor de Altova en un equipo Linux o macOS, entonces asegúrese de que la variable de entorno JAVA_HOME está definida correctamente y la biblioteca Java de equipos virtuales (en Windows, el archivo jvm.dll) se encuentra en uno de estos directorios: \bin\server o \bin\client.
Ejemplo XSLT
A continuación puede ver un ejemplo de XSLT que ilustra el uso de funciones para códigos de barras en una hoja de estilos 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="https://www.altova.com"
xmlns:altovaext=”https://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('Code39',string('some value'),
96,0, (altovaext-barcode-property:new( 'setModuleWidth', 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>
Paquete com.altova.extensions.barcode
El paquete com.altova.extensions.barcode se utiliza para generar la mayoría de códigos de barras.
Se utilizan estas clases:
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 Utilizada para almacenar las propiedades del código de barras que se establecerán más tarde de forma dinámica
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 Registra la clase com.altova.extensions.barcode.proxy.zxing.QRCodeBean para el bean qrcode, además de las clases registradas por org.krysalis.barcode4j.DefaultBarcodeClassResolver.
Ejemplo XQuery para generar códigos QR
A continuación puede ver un ejemplo de XQuery en el que se ven las funciones de código de barras que puede usar para generar una imagen de código QR.
declare variable \$lines := unparsed-text-lines('https://info.healthministry.gv.at/data/timeline-cases-provinces.csv', 'utf-8');
declare variable \$main := map:merge(tokenize(head(\$lines), ';')!map{.:position()});
declare variable \$data := map:merge(tail(\$lines)!array{tokenize(., ';')}!map{?(\$main?Name): [?(\$main?Date), xs:integer(?(\$main?ConfirmedCasesProvinces)) - xs:integer(?(\$main?Recovered))]}, map{'duplicates':'combine'});
declare variable \$chart_img := altovaext:chart(map{'width': 1900, 'height': 600}, map:for-each(\$data, function(\$k, \$v){[\$k, \$v?1!substring-before(., 'T'), \$v?2][\$k != 'Austria']}));
<img src="data:image/png;base64,{\$chart_img}"/>
(:\$main, \$data,:)
Paquete com.altova.extensions.barcode.proxy.zxing
El paquete com.altova.extensions.barcode.proxy.zxing se utiliza para generar códigos de barras de tipo QRCode.
Se utilizan estas clases:
class QRCodeBean
•Extiende org.krysalis.barcode4j.impl.AbstractBarcodeBean
•Crea una interfaz AbstractBarcodeBean para com.google.zxing.qrcode.encoder
void generateBarcode(CanvasProvider canvasImp, String msg)
void setQRErrorCorrectionLevel(QRCodeErrorCorrectionLevel level)
BarcodeDimension calcDimensions(String msg)
double getVerticalQuietZone()
double getBarWidth()
class QRCodeErrorCorrectionLevel Nivel de corrección de errores para QRCode
static QRCodeErrorCorrectionLevel byName(String name)
“L” = ~7% correction
“M” = ~15% correction
“H” = ~25% correction
“Q” = ~30% correction