Java에서 바코드 생성

Zeeshan Afridi 2023년10월12일
  1. 바코드의 종류
  2. Java에서 zxing 라이브러리를 사용하여 바코드 생성
  3. itextpdf 라이브러리를 사용하여 Java에서 바코드 생성
  4. 결론
Java에서 바코드 생성

바코드는 바와 공백으로 구성됩니다. 너비가 다른 평행선 패턴의 형태로 기계가 읽을 수 있는 문자와 숫자의 표현일 뿐입니다.

이러한 패턴은 특정 제품의 번호, 위치 또는 이름을 식별하기 위해 소매 ID 카드, 상점 품목 및 우편물에 부착됩니다. 바코드 기호에는 여백(quiet zone), 시작 문자, 중지 문자, 데이터 문자 및 여백(quiet zone)의 다섯 가지 구성 요소가 있습니다.

바코드의 종류

바코드를 식별하기 위해 아래에 표시된 바코드 유형을 살펴보겠습니다.

  1. 선형(1D) 바코드
  2. 매트릭스(2D) 바코드

가장 많이 사용되는 바코드 형식은 UPC, Code 39, Extended Code39, Code 128, EAN 128 및 QR 코드입니다.

Java에서 가장 많이 사용되는 두 가지 라이브러리인 itextpdfzxing을 사용하여 바코드를 생성할 수 있습니다.

Java에서 zxing 라이브러리를 사용하여 바코드 생성

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+삽입을 누릅니다.
  • itextpdf 웹사이트에서 다운로드한 itextpdf.jar을 선택합니다.

Java 코드에서 itextpdf를 가져와서 바코드를 생성할 수 있습니다.

예:

이 예제의 도움으로 Code 128 및 EAN 13 바코드를 PDF 형식으로 저장할 수 있습니다.

package org.example;

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;
import java.io.FileOutputStream;

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

출력:

자바 바코드 생성

결론

바코드는 제품 데이터를 막대와 영숫자 문자로 새기므로 매장에 물건을 입력하거나 초과 창고에서 재고를 추적하는 것이 훨씬 빠르고 쉽습니다. 용이성과 속도 외에도 바코드의 두드러진 비즈니스 우위는 정확성, 내부 제어 및 가격 절감을 포함합니다.

바코드에는 다양한 형식이 있습니다. 우리는 상황에 따라 다른 형식을 사용합니다.

zxingitextpdf 라이브러리의 도움으로 모든 바코드 형식을 사용할 수 있습니다. 다른 라이브러리도 있지만 이 두 라이브러리가 쉽고 빠릅니다.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn