用 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 中延迟几秒钟的时间
发布时间:2023/12/17 浏览次数:217 分类:Java
-
本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。
如何在 Java 中把 Hashmap 转换为 JSON 对象
发布时间:2023/12/17 浏览次数:187 分类:Java
-
它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。
如何在 Java 中按值排序 Map
发布时间:2023/12/17 浏览次数:171 分类:Java
-
本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map
进行排序,并列出了一些示例代码来理解它。
如何在 Java 中打印 HashMap
发布时间:2023/12/17 浏览次数:192 分类:Java
-
本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。
在 Java 中更新 Hashmap 的值
发布时间:2023/12/17 浏览次数:146 分类:Java
-
本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。
Java 中的 hashmap 和 map 之间的区别
发布时间:2023/12/17 浏览次数:79 分类:Java
-
本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,
在 Java 中获取用户主目录
发布时间:2023/12/17 浏览次数:218 分类:Java
-
这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。
Java 中 size 和 length 的区别
发布时间:2023/12/17 浏览次数:179 分类:Java
-
这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。
Java 中的互斥锁
发布时间:2023/12/17 浏览次数:111 分类:Java
-
了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,