用 Java 生成条形码
条形码由条和空格组成。 它只是一种机器可读的字符和数字表示形式,采用不同宽度的平行线图案的形式。
这些图案贴在零售身份证、商店物品和邮政邮件上,以识别特定产品的编号、位置或名称。 条形码符号有五个组成部分,即静区、起始字符、停止字符、数据字符和另一个静区。
条形码的类型
为了识别条形码,我们先来看看条形码的类型,如下所示:
- 线性 (1D) 条形码
- 矩阵(2D)条码
一些最常用的条形码格式包括 UPC、Code 39、扩展 Code39、Code 128、EAN 128 和 QR 码。
我们可以借助两个最常用的库(itextpdf 和 zxing)在 Java 中生成条形码。
使用 zxing 库在 Java 中生成条形码
我们可以使用zxing库在Java中生成条形码。 zxing 是斑马线的意思。
要使用这个库,我们必须在 IntelliJ IDEA 中遵循以下步骤。
- 使用 Java 语言创建一个新项目并构建系统 Maven。
-
打开pom.xml并编写以下代码。
<dependencies> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.3.0</version> </dependency> <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.3.0</version> </dependency> </dependencies>
- 按加载maven更改按钮或按快捷键ctrl+shift+o。
当我们同步依赖时,我们可以在我们的程序中导入zxing。
例子:
此代码将生成两个主要使用的条形码(Code 128 和 EAN 8)的图像。请记住,您必须在计算机上创建图像的路径。
package org.example;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.oned.Code128Writer;
import com.google.zxing.oned.EAN8Writer;
import java.nio.file.Paths;
public class Main {
public static void main(String[] args) {
try {
// Content for encode function of code128writer
String text = "http://www.google.com";
// Path where we save our barcode
String path = "E:\\barcode image\\code128barcode.jpg";
// Barcode code128 writer object
Code128Writer c128writer = new Code128Writer();
//Represents a 2D matrix of bits. Create a bar code with a width of 500 and a height of 300
BitMatrix matrix = c128writer.encode(text, BarcodeFormat.CODE_128, 500, 300);
MatrixToImageWriter.writeToPath(matrix, "jpg", Paths.get(path));
System.out.println("Barcode image file is created...");
// Digits for encode function of EAN_8
String digits = "12345678";
// Path where we save our barcode
path = "E:\\barcode image\\EANbarcode.jpg";
// Barcode EAN8 writer object
EAN8Writer EANwriter = new EAN8Writer();
/*Represents a 2D matrix of bits.
Create an EAN bar code of width 500 and height 300*/
matrix = EANwriter.encode(digits, BarcodeFormat.EAN_8, 500, 300);
MatrixToImageWriter.writeToPath(matrix, "jpg", Paths.get(path));
System.out.println("Barcode image file is created...");
} catch(Exception e) {
e.printStackTrace();
}
}
}
输出:
使用 itextpdf 库在 Java 中生成条形码
借助itextpdf库,我们可以用Java生成条形码并轻松地将其存储为PDF格式。 要使用这个库,我们必须遵循以下步骤。
- 从这里下载 itextpdf 库。
- 打开 IntelliJ IDEA。
- 使用 Java 语言创建一个新项目。
- 右键单击项目文件夹。
- 打开模块设置或按F4。
- 单击依赖项选项卡。
- 按添加按钮或按 Alt+Insert。
- 选择我们从 itextpdf 网站下载的 itextpdf.jar。
我们可以在Java代码中导入itextpdf来生成条形码。
例子:
借助此示例,我们可以以 PDF 格式存储 Code 128 和 EAN 13 条形码。
package org.example;
import java.io.FileOutputStream;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.pdf.Barcode128;
import com.itextpdf.text.pdf.BarcodeEAN;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfWriter;
public class Main {
public static void main(String[] args) {
Main.barcodePDF("mybarcodepdf.pdf","Zeshan");
}
public static void barcodePDF(String pdfFilename,String myString) {
//declare object of document class of the itextpdf library
Document doc = new Document();
PdfWriter pdfWriter = null;
try {
//initialize docWriter object with the path of the pdf file
//mention the path of your computer
pdfWriter = PdfWriter.getInstance(doc, new FileOutputStream("E:\\my barcode pdf\\"+pdfFilename));
//set pdf file properties
doc.addAuthor("zeshan");
doc.addCreationDate();
doc.addProducer();
doc.addCreator("google.com");
doc.addTitle("java barcode generation");
doc.setPageSize(PageSize.A4);
doc.open();
/*PdfContentByte is an object that contains the user-positioned text and
graphic contents of a page*/
PdfContentByte cb = pdfWriter.getDirectContent();
//type of barcode
Barcode128 code128 = new Barcode128();
//remove all leading and trail space and pass to set code
code128.setCode(myString.trim());
code128.setCodeType(Barcode128.CODE128);
/*create the image of the barcode with null bar color and null text color
set its position and scale percent*/
Image code128Image = code128.createImageWithBarcode(cb, null, null);
code128Image.setAbsolutePosition(10, 700);
code128Image.scalePercent(150);
// Add image to pdf file
doc.add(code128Image);
// Type of barcode
BarcodeEAN codeEAN = new BarcodeEAN();
// Remove all leading and trail space and pass to set code
codeEAN.setCode(myString.trim());
// Set barcode type
codeEAN.setCodeType(BarcodeEAN.EAN13);
/* Create an image of the barcode with a null bar color and
null text color its position and scale percent */
Image codeEANImage = code128.createImageWithBarcode(cb, null, null);
codeEANImage.setAbsolutePosition(10, 600);
codeEANImage.scalePercent(150);
// Add image to pdf file
doc.add(codeEANImage);
System.out.println("Barcode in PDF file is created...");
} catch (Exception ex) {
ex.printStackTrace();
} finally {
//close doc and docwriter if they are not null
if (doc != null) {
doc.close();
}
if (pdfWriter != null) {
pdfWriter.close();
}
}
}
}
输出:
总结
条形码将产品数据刻入条形和字母数字字符中,从而可以更快、更轻松地在商店输入商品或跟踪超额仓库中的库存。 除了简单和速度之外,条形码的突出商业优势还包括准确性、内部控制和节省价格——它们是许多条形码的衡量标准。
条形码有多种格式。 我们在不同的情况下使用不同的格式。
我们可以在 zxing 和 itextpdf 库的帮助下使用所有条形码格式。 还有其他库,但这两个库既简单又快速。
相关文章
Java迭代器remove()方法
发布时间:2023/07/17 浏览次数:117 分类:Java
-
Java 开发人员经常需要在迭代时从 ArrayList 中删除元素或对象。在本文中,我们将了解迭代器的remove()方法和集合的remove()方法的工作原理有何不同。
查找 Java 中的内存泄漏
发布时间:2023/07/17 浏览次数:96 分类:Java
-
本文将教我们如何查找Java内存泄漏。未使用的项目占用额外的内存空间称为内存泄漏。 内存泄漏是有问题的,因为它们会堵塞内存资源并随着时间的推移降低系统性能。
Java 8 Stream 中的属性不同
发布时间:2023/07/17 浏览次数:171 分类:Java
-
本文通过属性演示了在 Java 中使用流的独特功能。Java 8 Stream 中的属性不同 Java 8 Stream 有一个 distinct() 方法,可以过滤列表中的重复项。
在 Java 中将 Iterable 转换为 Stream
发布时间:2023/07/17 浏览次数:51 分类:Java
-
在本文中,我们将学习一种将 Iterable 转换为 Stream 的方法。在 Java 中使用 StreamSupport.stream() 方法将 Iterable 转换为 Stream
在 Eclipse 中更改 Java 版本
发布时间:2023/07/17 浏览次数:110 分类:Java
-
用户在处理特定项目时可能需要降级或升级 Java 版本。 在这种情况下,Eclipse IDE 允许我们更改特定项目的 JDK 版本。本文介绍了在 Eclipse IDE 中更改 Java 版本的分步指南。在 Eclipse 中下载并添加
在 Java 中使用 Fiddler 捕获 HTTPS 流量
发布时间:2023/07/17 浏览次数:59 分类:Java
-
Fiddler是一个Web调试代理工具,可以帮助开发人员调试Web应用程序。 它允许捕获网络流量并监控传入和传出的数据。本文将教我们设置Fiddler来捕获HTTPS流量。
用 Java 构建工具
发布时间:2023/07/17 浏览次数:53 分类:Java
-
本文主要关注Java构建工具。 首先,我们将了解什么是构建工具,然后我们将讨论 5 个最流行的 Java 工具。什么是构建工具 无论开发人员使用哪种编程语言来开发软件,构建工具在自动化构建过
Java 中的警报弹出窗口
发布时间:2023/07/17 浏览次数:149 分类:Java
-
Swing 库用 Java 显示警报弹出窗口。 本教程演示如何用 Java 创建警报消息。Java 中的警报弹出窗口 如上所述,Swing 库用 Java 创建警报弹出窗口。
Java 中的背景颜色
发布时间:2023/07/17 浏览次数:108 分类:Java
-
本文介绍如何在 Java 中更改背景颜色。Java 中的背景颜色 在 Java GUI 中更改背景颜色是一个简单的操作。 setBackground() 方法用于设置和更改 Java 中 JFrame 的背景颜色。