PDF 송장, 영수증 또는 보고서와 같은 문서에는 바코드 형태로 인코딩된 정보가 포함될 수 있습니다. 프로그래밍 방식으로 PDF 문서에 포함된 바코드를 감지, 식별 및 읽을 수 있습니다. 이 기사에서는 Java를 사용하여 PDF 문서에서 바코드를 읽는 방법을 배웁니다. 또한 Java에서 PDF 문서에서 바코드 이미지를 추출하는 방법을 배웁니다.
이 문서에서는 다음 주제를 다룹니다.
- PDF에서 바코드를 읽는 Java API
- PDF에서 바코드 읽기
- PDF를 이미지로 변환하고 바코드 읽기
- PDF에서 바코드 추출 및 읽기
- PngDevice를 사용하여 PDF에서 바코드 읽기
- PDF에서 바코드 이미지 찾기 및 읽기
PDF에서 바코드를 읽는 Java API
PDF 문서에서 바코드를 읽으려면 2단계 절차를 따릅니다. 먼저 Aspose.PDF for Java API를 사용하여 PDF 문서를 로드하고 해당 페이지를 래스터 이미지로 렌더링합니다. 그런 다음 Aspose.BarCode for Java API를 사용하여 렌더링된 이미지에서 바코드를 읽습니다.
API의 JAR을 다운로드하거나 Maven 기반 Java 애플리케이션에 다음 pom.xml 구성을 추가하십시오.
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>http://repository.aspose.com/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-barcode</artifactId>
<version>22.8</version>
</dependency>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-pdf</artifactId>
<version>22.8</version>
</dependency>
Java를 사용하여 PDF에서 바코드 읽기
Aspose.PDF API는 PDF 문서를 나타내는 Document 클래스를 제공합니다. API의 convertToPNGMemoryStream() 메서드는 PDF 페이지를 byte[] 배열의 이미지 스트림으로 렌더링합니다. Aspose.BarCode API는 바코드를 감지하는 readBarCodes 작업을 수행할 수 있는 BarCodeReader 클래스를 제공합니다. BarCodeResult 클래스는 바코드 유형, 코드 텍스트, 지역 및 기타 매개변수와 같은 감지된 바코드 정보를 저장합니다.
아래 단계에 따라 PDF 문서의 모든 페이지에 포함된 바코드 이미지를 읽을 수 있습니다.
- 먼저 Document 클래스를 사용하여 PDF 문서를 로드합니다.
- 다음으로 모든 페이지를 반복하고 스트림으로 렌더링합니다.
- 그런 다음 스트림 개체를 사용하여 BarCodeReader 클래스의 인스턴스를 만듭니다.
- 그런 다음 readBarCodes() 메서드를 호출하여 BarCodeResult 개체를 가져옵니다.
- 마지막으로 바코드 정보를 보여줍니다.
다음 코드 예제는 Java를 사용하여 PDF 문서에서 바코드를 읽는 방법을 보여줍니다.
// 이 코드 예제는 Java를 사용하여 PDF 문서에서 바코드를 읽는 방법을 보여줍니다.
// 문서의 경로
String file = "C:\\Files\\BarCode\\sample-PDF-with-Barcodes.pdf";
// PDF 문서 로드
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);
// 1페이지부터 모든 PDF 페이지를 진행합니다.
for (int i = 1; i <= pdfDoc.getPages().size(); ++i)
{
// PDF 페이지를 스트림으로 렌더링
byte[] ms = pdfDoc.getPages().get_Item(i).convertToPNGMemoryStream();
InputStream stream = new ByteArrayInputStream(ms);
// 페이지 스트림에서 바코드 인식
BarCodeReader reader = new BarCodeReader(stream);
// 결과 보여줘
for (BarCodeResult result : reader.readBarCodes()) {
System.out.println("CodeText: " + result.getCodeText());
System.out.println("Symbology type: " + result.getCodeType());
System.out.println(("-------------------------------"));
}
}
CodeText: Aspose.Barcode Pdf417 Example
Symbology type: Pdf417
-------------------------------
CodeText: Aspose.Barcode QR Example
Symbology type: QR
-------------------------------
CodeText: Aspose.Barcode DataMatrix Example
Symbology type: DataMatrix
이 블로그 게시물에 사용된 입력된 PDF 문서를 바코드로 다운로드하십시오.
PDF를 이미지로 변환하고 Java를 사용하여 바코드 읽기
PDF 페이지를 이미지로 변환하여 PDF 문서에서 바코드를 읽을 수도 있습니다. API의 PdfConverter 클래스를 사용하면 PDF 파일의 각 페이지를 이미지로 변환할 수 있습니다. 그런 다음 변환된 이미지에서 바코드 정보를 읽습니다.
아래 단계에 따라 변환된 PDF 페이지에서 바코드를 읽을 수 있습니다.
- 먼저 Document 클래스를 사용하여 PDF 문서를 로드합니다.
- 다음으로 PdfConverter 클래스의 인스턴스를 만듭니다.
- 선택적으로 setBarcodeOptimization()을 사용하여 렌더링 옵션을 설정합니다.
- 그런 다음 이미지 해상도를 설정합니다.
- 그런 다음 setStartPage() 및 setEndPage()를 사용하여 이미지로 렌더링할 페이지 범위를 지정합니다.
- 그런 다음 doConvert() 메서드를 호출하여 선택한 페이지를 이미지로 렌더링합니다.
- 다음으로 루프에 이미지를 저장합니다.
- 그런 다음 저장된 이미지 파일 경로를 사용하여 BarCodeReader 클래스의 인스턴스를 만듭니다.
- 그런 다음 readBarCodes() 메서드를 호출하여 BarCodeResult 개체를 가져옵니다.
- 마지막으로 바코드 정보를 보여줍니다.
다음 코드 예제는 Java를 사용하여 PDF 페이지를 이미지로 변환하고 바코드를 읽는 방법을 보여줍니다.
// 다음 코드 예제는 PDF 변환기를 사용하여 PDF 페이지를 이미지로 변환하고 바코드를 읽는 방법을 보여줍니다.
// 문서의 경로
String folderPath = "C:\\Files\\BarCode\\";
// 입력 파일 경로
String file = folderPath + "sample-PDF-with-Barcodes.pdf";
// PDF 문서 로드
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);
// PdfConvertor 초기화
com.aspose.pdf.facades.PdfConverter pdfConverter = new com.aspose.pdf.facades.PdfConverter(pdfDoc);
// 바코드 최적화 설정
pdfConverter.getRenderingOptions().setBarcodeOptimization(true);
// 페이지 해상도 설정
// 300dpi는 표준 해상도입니다.
pdfConverter.setResolution(new com.aspose.pdf.devices.Resolution(300));
// 모든 페이지를 이미지로 렌더링하도록 설정
pdfConverter.setStartPage(1); //starts from page 1
pdfConverter.setEndPage(pdfConverter.getDocument().getPages().size());
// 선택한 페이지를 이미지로 렌더링
pdfConverter.doConvert();
int imageCount = 1;
while (pdfConverter.hasNextImage())
{
// 현재 페이지를 이미지로 렌더링
String strBarCodeImage = folderPath + imageCount + ".jpg";
pdfConverter.getNextImage(strBarCodeImage);
// 페이지의 렌더링된 이미지에서 바코드 인식
BarCodeReader reader = new BarCodeReader(strBarCodeImage);
// 결과 보여줘
for (BarCodeResult result : reader.readBarCodes()) {
System.out.println("CodeText: " + result.getCodeText());
System.out.println("Symbology type: " + result.getCodeType());
System.out.println(("-------------------------------"));
}
}
Java를 사용하여 PDF에서 바코드 추출 및 읽기
마찬가지로 PdfExtractor 클래스를 사용하여 PDF 페이지에 포함된 바코드 이미지를 인식할 수도 있습니다. PDF에서 이미지를 추출할 수 있으며 추출된 이미지에서 바코드 정보를 읽습니다.
아래 단계에 따라 추출된 이미지에서 바코드를 읽을 수 있습니다.
- 먼저 PdfExtractor 클래스의 인스턴스를 만듭니다.
- 그런 다음 bindPdf() 메서드를 사용하여 입력 PDF 문서를 바인딩합니다.
- 그런 다음 이미지 추출을 위한 페이지 범위를 설정합니다.
- 다음으로 extractImage() 메서드를 호출하여 이미지를 추출합니다.
- 그런 다음 이미지를 루프에 저장합니다.
- 다음으로 이미지 경로를 사용하여 BarCodeReader 클래스의 인스턴스를 만듭니다.
- 그런 다음 readBarCodes() 메서드를 호출하여 BarCodeResult 개체를 가져옵니다.
- 마지막으로 바코드 정보를 보여줍니다.
다음 코드 예제는 Java를 사용하여 PDF 문서에서 바코드 이미지를 추출하고 읽는 방법을 보여줍니다.
// 다음 코드 예제는 PdfExtractor를 사용하여 PDF 페이지를 이미지로 변환하고 바코드를 읽는 방법을 보여줍니다.
// 문서의 경로
String folderPath = "C:\\Files\\BarCode\\";
// 입력 파일
String file = folderPath + "sample-PDF-with-Barcodes.pdf";
// PDF 문서 바인딩
com.aspose.pdf.facades.PdfExtractor pdfExtractor = new com.aspose.pdf.facades.PdfExtractor();
pdfExtractor.bindPdf(file);
// 이미지 추출을 위한 페이지 범위 설정
pdfExtractor.setStartPage(1);
pdfExtractor.setEndPage(3);
// 이미지 추출
pdfExtractor.extractImage();
int imageCount = 1;
// 루프에서 스트리밍할 이미지 저장
while (pdfExtractor.hasNextImage())
{
// 이미지를 저장
String strBarCodeImage = folderPath + imageCount + ".jpg";
pdfExtractor.getNextImage(strBarCodeImage);
// 이미지에서 바코드 인식
BarCodeReader reader = new BarCodeReader(strBarCodeImage);
for (BarCodeResult result : reader.readBarCodes()) {
System.out.println("CodeText: " + result.getCodeText());
System.out.println("Symbology type: " + result.getCodeType());
System.out.println(("-------------------------------"));
}
}
Java에서 PngDevice를 사용하여 PDF에서 바코드 읽기
API의 PngDevice 클래스를 사용하여 PDF 문서의 페이지를 PNG 이미지로 변환하여 바코드를 읽을 수도 있습니다. 페이지를 PNG로 변환하여 출력 스트림에 저장하는 process(Page page, OutputStream output) 메서드를 제공합니다. 이 클래스의 processToBufferedImage(Page page) 메서드는 페이지를 BufferedImage로 변환합니다.
아래 단계에 따라 변환된 PDF 페이지의 바코드를 PNG 이미지로 읽을 수 있습니다.
- 먼저 Document 클래스를 사용하여 PDF 문서를 로드합니다.
- 다음으로 PngDevice 클래스의 인스턴스를 만듭니다.
- 그런 다음 모든 페이지를 반복하고 processToBufferedImage() 메서드를 호출하여 이미지로 렌더링합니다.
- 다음으로 BufferedImage 개체를 사용하여 BarCodeReader 클래스의 인스턴스를 만듭니다.
- 그런 다음 readBarCodes() 메서드를 호출하여 BarCodeResult 개체를 가져옵니다.
- 마지막으로 바코드 정보를 보여줍니다.
다음 코드 예제는 Java를 사용하여 PDF 페이지를 변환하고 바코드를 읽는 방법을 보여줍니다.
// 다음 코드 예제는 PngDevice를 사용하여 PDF 페이지를 이미지로 변환하고 바코드를 읽는 방법을 보여줍니다.
// 문서의 경로
String file = "C:\\Files\\BarCode\\sample-PDF-with-Barcodes.pdf";
// PDF 문서 로드
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);
// 300dpi 표준 해상도로 PNG 장치 만들기
com.aspose.pdf.devices.PngDevice pngDevice = new com.aspose.pdf.devices.PngDevice(new com.aspose.pdf.devices.Resolution(300));
// 1페이지부터 모든 PDF 페이지를 진행합니다.
for (int i = 1; i <= pdfDoc.getPages().size(); ++i)
{
// PDF 페이지를 버퍼링된 이미지로 렌더링
BufferedImage img = pngDevice.processToBufferedImage(pdfDoc.getPages().get_Item(i));
// 페이지의 렌더링된 이미지에서 바코드 인식
BarCodeReader reader = new BarCodeReader(img);
// 결과 보여줘
for (BarCodeResult result : reader.readBarCodes()) {
System.out.println("CodeText: " + result.getCodeText());
System.out.println("Symbology type: " + result.getCodeType());
System.out.println(("-------------------------------"));
}
}
Java를 사용하여 PDF에서 바코드 이미지 찾기 및 읽기
ImagePlacementAbsorber 클래스를 사용하여 PDF 문서에서 바코드 이미지를 찾고 추출할 수 있습니다. 이미지 사용 검색을 수행하고 ImagePlacements 컬렉션을 통해 검색 결과에 대한 액세스를 제공합니다. 이 방법을 사용하면 원래 해상도로 바코드를 인식할 수 있습니다. 유일한 단점은 벡터 형식을 올바르게 인식하지 못할 수 있다는 것입니다.
아래 단계에 따라 PDF 문서에서 바코드를 찾고 읽을 수 있습니다.
- 먼저 Document 클래스를 사용하여 PDF 문서를 로드합니다.
- 다음으로 ImagePlacementAbsorber 클래스의 인스턴스를 만듭니다.
- 그런 다음 루프의 각 페이지에 대해 visit() 메서드를 호출합니다.
- 다음으로 ImagePlacements 컬렉션에서 찾은 모든 이미지를 반복합니다.
- 그런 다음 이미지를 메모리 스트림에 저장합니다.
- 다음으로 스트림 개체를 사용하여 BarCodeReader 클래스의 인스턴스를 만듭니다.
- 그런 다음 readBarCodes() 메서드를 호출하여 BarCodeResult 개체를 가져옵니다.
- 마지막으로 바코드 정보를 보여줍니다.
다음 코드 예제는 Java를 사용하여 PDF에서 바코드 이미지를 찾고 읽는 방법을 보여줍니다.
// 이 코드 예제는 ImagePlacementAbsorber를 사용하여 PDF 문서에서 바코드를 읽는 방법을 보여줍니다.
// 문서의 경로
String file = "C:\\Files\\BarCode\\sample-PDF-with-Barcodes.pdf";
// PDF 문서 로드
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);
// ImagePlacementAbsorber 초기화
com.aspose.pdf.ImagePlacementAbsorber imagePlacementAbsorber = new com.aspose.pdf.ImagePlacementAbsorber();
// 1페이지부터 문서의 모든 PDF 페이지 처리
for (int i = 1; i <= pdfDoc.getPages().size(); ++i)
{
// 페이지를 방문하여 이미지 추출기 만들기
imagePlacementAbsorber.visit(pdfDoc.getPages().get_Item(i));
// PDF 페이지에서 모든 이미지 추출
for (com.aspose.pdf.ImagePlacement imagePlacement : imagePlacementAbsorber.getImagePlacements()) {
// PDF 페이지를 스트림으로 렌더링
byte[] ms = pdfDoc.getPages().get_Item(i).convertToPNGMemoryStream();
InputStream stream = new ByteArrayInputStream(ms);
// 페이지 스트림에서 바코드 인식
BarCodeReader reader = new BarCodeReader(stream);
// 결과 보여줘
for (BarCodeResult result : reader.readBarCodes()) {
System.out.println("CodeText: " + result.getCodeText());
System.out.println("Symbology type: " + result.getCodeType());
System.out.println(("-------------------------------"));
}
}
}
무료 라이선스 받기
평가 제한 없이 라이브러리를 사용해 보려면 무료 임시 라이센스를 얻으십시오.
결론
이 기사에서 우리는 배웠습니다
- PDF 문서에서 바코드를 감지하고 읽는 방법
- PDF 문서에서 이미지를 추출하는 다양한 방법;
- Java에 포함된 바코드를 디코딩합니다.
Java의 PDF에서 바코드를 읽는 것 외에도 Aspose.BarCode 문서 및 Aspose.PDF 문서를 사용하여 API에 대해 자세히 알아볼 수 있습니다. 모호한 점이 있는 경우 무료 지원 포럼에서 언제든지 문의해 주십시오.