迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > 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 中延迟几秒钟的时间

发布时间: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 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便