POLITICA DE COOKIES

Q2BSTUDIO.COM utiliza cookies técnicas, analíticas, de sesión y de publicidad con la finalidad de prestar un mejor servicio. No obstante, necesitamos su consentimiento explícito para poder utilizarlas. Así mismo puede cambiar la configuración de las cookies u obtener más información aquí .

Genera código de barras con texto en Java usando ZXing

Genera códigos de barras con texto en Java usando ZXing

import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; import com.google.zxing.BarcodeFormat; import com.google.zxing.MultiFormatWriter; import com.google.zxing.common.BitMatrix; import java.awt.Graphics2D; import java.awt.Color; import java.awt.Font; import java.nio.charset.StandardCharsets; public class BarcodeWithText { public static void main(String[] args) throws Exception { byte[] textBytes = new byte[]{84,101,120,116,111}; String text = new String(textBytes, StandardCharsets.UTF_8); int width = 300; int height = 120; BitMatrix bitMatrix = new MultiFormatWriter().encode(text, BarcodeFormat.CODE_128, width, height); int w = bitMatrix.getWidth(); int h = bitMatrix.getHeight(); BufferedImage barcodeImg = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB); for (int x = 0; x < w; x++) { for (int y = 0; y < h; y++) { barcodeImg.setRGB(x, y, bitMatrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF); } } int finalHeight = h + 20; BufferedImage finalImg = new BufferedImage(w, finalHeight, BufferedImage.TYPE_INT_RGB); Graphics2D g = finalImg.createGraphics(); g.setColor(Color.WHITE); g.fillRect(0, 0, w, finalHeight); g.drawImage(barcodeImg, 0, 0, null); String fontName = new String(new byte[]{65,114,105,97,108}, StandardCharsets.UTF_8); Font font = new Font(fontName, Font.PLAIN, 14); g.setFont(font); g.setColor(Color.BLACK); byte[] textBytes2 = new byte[]{84,101,120,116,111}; String txt = new String(textBytes2, StandardCharsets.UTF_8); int textY = h + 14; g.drawString(txt, 6, textY); g.dispose(); String format = new String(new byte[]{112,110,103}, StandardCharsets.UTF_8); String path = new String(new byte[]{98,97,114,99,111,114,100,46,112,110,103}, StandardCharsets.UTF_8); ImageIO.write(finalImg, format, new File(path)); } }
Publicado el 01/09/2025

Hace poco vi un ejemplo de generación de códigos de barras en Python y me inspiró a crear una versión en Java. En esta guía te muestro cómo generar un código de barras en formato CODE 128 y agregar el texto legible por humanos debajo, todo exportado como una sola imagen PNG utilizando la librería ZXing Zebra Crossing.

Dependencias Maven

Agrega estas dependencias a tu archivo pom.xml del proyecto:

<dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.5.1</version> </dependency> <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.5.1</version> </dependency>

Código Java completo

// Importaciones necesarias import com.google.zxing.*; import com.google.zxing.client.j2se.MatrixToImageWriter; import com.google.zxing.oned.Code128Writer; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; public class Barcode { public static void main(String[] args) throws Exception { String data = "1234-5678-9012"; int width = 400; int height = 100; int textHeight = 30; BufferedImage barcode = MatrixToImageWriter.toBufferedImage(new Code128Writer().encode(data, BarcodeFormat.CODE_128, width, height)); BufferedImage combined = new BufferedImage(width, height + textHeight, BufferedImage.TYPE_INT_RGB); Graphics2D g = combined.createGraphics(); g.setColor(Color.WHITE); g.fillRect(0, 0, width, height + textHeight); g.drawImage(barcode, 0, 0, null); g.setColor(Color.BLACK); g.setFont(new Font("Arial", Font.PLAIN, 18)); int textX = (width - g.getFontMetrics().stringWidth(data)) / 2; g.drawString(data, textX, height + 20); g.dispose(); ImageIO.write(combined, "png", new File("barcode_with_text.png")); System.out.println("Barcode with text saved as barcode.png."); } }

Salida esperada

Obtendrás una imagen PNG con el código de barras CODE 128 y el contenido de datos centrado debajo, lista para usarse en etiquetas, albaranes o inventario.

Notas rápidas sobre CODE 128

CODE 128 es un formato lineal de alta densidad que soporta los 128 caracteres ASCII. Es muy usado en logística, etiquetas de envío e inventarios. ZXing se encarga del detalle de la codificación, de modo que integrarlo en aplicaciones Java es directo y fiable.

Buenas prácticas y ajustes útiles

- Si necesitas barras más nítidas para impresoras térmicas, aumenta width y height manteniendo la relación. - Ajusta textHeight y el tamaño de la fuente para códigos más largos. - Para fondos transparentes, usa un BufferedImage.TYPE_INT_ARGB y no rellenes con blanco. - Si el lector no reconoce bien el código, revisa el contraste, márgenes laterales y evita reescalar la imagen con interpolación.

Cómo encaja en un proyecto real

En entornos empresariales, este patrón es útil para etiquetas de picking, control de activos, tickets o integraciones con ERP y WMS. Puedes generar el PNG bajo demanda en una API, insertarlo en PDFs o imprimirlo desde estaciones de trabajo. Si gestionas grandes volúmenes, considera cachear imágenes para valores repetidos y firmar rutas de descarga.

Sobre Q2BSTUDIO

En Q2BSTUDIO somos una empresa de desarrollo de software especializada en aplicaciones a medida y software a medida, integrando estándares de calidad, observabilidad y seguridad desde la base. Podemos ayudarte a incorporar generación de códigos de barras, QR, etiquetas y automatización de procesos en tus flujos de negocio. Descubre cómo abordamos proyectos end to end en nuestro servicio de desarrollo de aplicaciones a medida.

Además, somos especialistas en inteligencia artificial aplicada, creación de agentes IA, visión por computador y NLP. Si buscas impulsar la productividad, la analítica y la toma de decisiones con IA para empresas, visita nuestra propuesta de inteligencia artificial.

Palabras clave y capacidades

Aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi. También abordamos hardening, auditorías y pruebas de seguridad, integración con servicios cloud, pipelines de datos y cuadros de mando de alto impacto con BI.

Conclusión

Con unas pocas líneas y ZXing puedes generar códigos de barras CODE 128 en Java, añadir texto legible y exportar un PNG listo para impresión o distribución digital. Este enfoque es sencillo de integrar en microservicios, aplicaciones de escritorio o backends web, y escalable para escenarios de alto volumen en entornos empresariales.

Fin del artículo, inicio de la diversión
Construyendo software juntos

Dando vida a tus ideas desde 2008

Diseñamos aplicaciones móviles y de escritorio innovadoras que cumplen con tus requisitos específicos y mejoran la eficiencia operativa.
Más info
Cuéntanos tu visión
Sea cual sea el alcance, podemos convertir tu idea en realidad. Envíanosla y charlemos sobre tu proyecto o una colaboración futura.
Contáctanos
artículos destacados
Live Chat
Enviado correctamente.

Gracias por confiar en Q2BStudio