Generación de códigos de barra y QR con java
Un código de barras es un conjunto de líneas verticales de distintos grosores que se decodifica usando un lector, el mismo permite obtener un dato sobre cada producto, que lo identifica de los demás. Entonces… si nosotros integramos esto con un sistema y su base de datos podemos:
- Identificar rápidamente un producto con su información
- Reducir margen de error en la identificación
- Mayor control en el ingreso/egreso de productos
- Rapidez en la obtención de información
Por otra parte, tenemos un código QR que surgió posteriormente, su uso más común es codificar una URL o información de contacto. Cuando compramos un producto suele pasar que viene un folleto con un QR que tiene una URL a algún contenido que el fabricante nos quiera mostrar.
En este post les traigo como generar códigos de barra con Java, para poder integrarlo con nuestros sistemas, les dejo un prototipo en Github que implementa las librerías ZXing (para QRs) y Barbecue (para barcodes).
Si bien se dejó programado un EJB con acceso a todas las funcionalidades de estas librerías y un test JUnit para generar barcodes/qr en la carpeta Resources, a continuación detallo como usar el proyecto:
Generación de códigos de barra

Mediante el objeto BarecueBarCodeGenerator podemos acceder a los métodos:
void genBarCodeImage(String data, BarCodeTypeEnum tipo, File pathImage, int width, int height, int resolution, boolean drawText)
void genBarCodeImage(String data, BarCodeTypeEnum tipo, File pathImage)
Estos métodos se encargan de generar el código de barras en la ruta indicada, el primero permite tocar más parámetros ajustando tamaño y si se le agrega el contenido numérico del código.
Generación de códigos QR

La generación de códigos QR se realiza a través del objeto ReportsQRManager.
Con el siguiente snippet podemos generar un código QR, simplemente dándole la cadena String que es lo que codificaremos:
try{
ReportsQRManager qrManager=new ReportsQRManager();
File f=new File("src/main/resources/salidasTest/QRTest/qr_test.png");
FileOutputStream outputStream= new FileOutputStream(f);
qrManager.createQrCode(outputStream, "Nico", 200, "png");
InputStream in= DynamicFileReader.loadFile("qr_test.png");
log.log(logInfo,"QR Generado sin errores");
String decode = qrManager.decodeQRCode(f);
log.log(logInfo, "Decodificando... : " + decode);
}catch(Exception ex){
log.log(logInfo,"Error en generacion de QR: " + ex.getLocalizedMessage());
}
Al código QR se le puede establecer un tamaño, un formato y la ruta donde será generado.
Para testear el prototipo se agregó un test Junit en uy.com.filenotfound.test.BarCodeQRTest.
Si nosotros ejecutamos la prueba Junit, obtenemos todos los códigos de barra que soporta el prototipo y un QR.
