迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

用 Java 生成条形码

作者:迹忆客 最近更新:2023/07/16 浏览次数:

条形码由条和空格组成。 它只是一种机器可读的字符和数字表示形式,采用不同宽度的平行线图案的形式。

这些图案贴在零售身份证、商店物品和邮政邮件上,以识别特定产品的编号、位置或名称。 条形码符号有五个组成部分,即静区、起始字符、停止字符、数据字符和另一个静区。


条形码的类型

为了识别条形码,我们先来看看条形码的类型,如下所示:

  1. 线性 (1D) 条形码
  2. 矩阵(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();
        }
    }

}

输出:

java条码生成


使用 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();
            }
        }
    }
}

输出:

java条码生成


总结

条形码将产品数据刻入条形和字母数字字符中,从而可以更快、更轻松地在商店输入商品或跟踪超额仓库中的库存。 除了简单和速度之外,条形码的突出商业优势还包括准确性、内部控制和节省价格——它们是许多条形码的衡量标准。

条形码有多种格式。 我们在不同的情况下使用不同的格式。

我们可以在 zxing 和 itextpdf 库的帮助下使用所有条形码格式。 还有其他库,但这两个库既简单又快速。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

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 的背景颜色。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便