เอกสาร PDF เช่น ใบแจ้งหนี้ ใบเสร็จรับเงิน หรือรายงาน อาจมีข้อมูลที่เข้ารหัสในรูปแบบของบาร์โค้ด เราสามารถตรวจจับ ระบุ และอ่านบาร์โค้ดที่ฝังอยู่ในเอกสาร PDF โดยทางโปรแกรม ในบทความนี้ เราจะเรียนรู้วิธีการอ่านบาร์โค้ดจากเอกสาร PDF โดยใช้ Java นอกจากนี้ เราจะได้เรียนรู้วิธีการแยกภาพบาร์โค้ดจากเอกสาร PDF ในภาษาจาวา
บทความนี้จะครอบคลุมหัวข้อต่อไปนี้:
- Java API เพื่ออ่านบาร์โค้ดจาก PDF
- อ่านบาร์โค้ดจาก PDF
- แปลง PDF เป็นรูปภาพและอ่านบาร์โค้ด
- แยกและอ่านบาร์โค้ดจาก PDF
- อ่านบาร์โค้ดจาก PDF โดยใช้ PngDevice
- ค้นหาและอ่านภาพบาร์โค้ดจาก PDF
Java API เพื่ออ่านบาร์โค้ดจาก PDF
หากต้องการอ่านบาร์โค้ดจากเอกสาร PDF เราจะทำตามขั้นตอนสองขั้นตอน ประการแรก เราจะใช้ API ของ Aspose.PDF for Java เพื่อโหลดเอกสาร PDF และแสดงหน้าเอกสารเป็นภาพแรสเตอร์ หลังจากนั้น เราจะอ่านบาร์โค้ดจากภาพที่แสดงผลโดยใช้ API Aspose.BarCode for Java
โปรด ดาวน์โหลด JAR ของ API หรือเพิ่มการกำหนดค่า pom.xml ต่อไปนี้ในแอปพลิเคชัน Java ที่ใช้ Maven
<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>
อ่านบาร์โค้ดจาก PDF โดยใช้ Java
Aspose.PDF API มีคลาส Document ที่แสดงถึงเอกสาร PDF เมธอด convertToPNGMemoryStream() ของ API แสดงผลหน้า PDF เป็นสตรีมรูปภาพในอาร์เรย์ byte[] Aspose.BarCode API มีคลาส BarCodeReader ที่ช่วยให้เราสามารถดำเนินการ readBarCodes เพื่อตรวจจับบาร์โค้ดได้ คลาส BarCodeResult เก็บข้อมูลบาร์โค้ดที่ตรวจพบ เช่น ประเภทบาร์โค้ด ข้อความรหัส ภูมิภาค และพารามิเตอร์อื่นๆ
เราสามารถอ่านภาพบาร์โค้ดที่ฝังอยู่ในหน้าใดก็ได้ของเอกสาร PDF โดยทำตามขั้นตอนด้านล่าง:
- ขั้นแรก ให้โหลดเอกสาร PDF โดยใช้คลาส Document
- ถัดไป วนซ้ำหน้าทั้งหมดและแสดงผลในสตรีม
- จากนั้น สร้างอินสแตนซ์ของคลาส BarCodeReader ด้วยสตรีมอ็อบเจกต์
- หลังจากนั้น เรียกเมธอด readBarCodes() เพื่อรับออบเจกต์ BarCodeResult
- สุดท้ายแสดงข้อมูลบาร์โค้ด
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการอ่านบาร์โค้ดจากเอกสาร PDF โดยใช้ Java
// ตัวอย่างรหัสนี้สาธิตวิธีการอ่านบาร์โค้ดจากเอกสาร PDF โดยใช้ Java
// เส้นทางไปยังเอกสาร
String file = "C:\\Files\\BarCode\\sample-PDF-with-Barcodes.pdf";
// โหลดเอกสาร PDF
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);
// ดำเนินการหน้า PDF ทั้งหมดโดยเริ่มจากหน้า 1
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 เป็นรูปภาพ คลาส PdfConverter ของ API ช่วยให้แปลงแต่ละหน้าของไฟล์ PDF เป็นรูปภาพได้ หลังจากนั้นเราจะอ่านข้อมูลบาร์โค้ดจากภาพที่แปลง
เราสามารถอ่านบาร์โค้ดจากหน้า PDF ที่แปลงแล้วโดยทำตามขั้นตอนด้านล่าง:
- ขั้นแรก ให้โหลดเอกสาร PDF โดยใช้คลาส Document
- จากนั้น สร้างอินสแตนซ์ของคลาส PdfConverter
- หรือตั้งค่าตัวเลือกการแสดงผลโดยใช้ setBarcodeOptimization()
- จากนั้นตั้งค่าความละเอียดของภาพ
- จากนั้น ระบุช่วงของหน้าที่จะแสดงผลเป็นรูปภาพโดยใช้ setStartPage() และ setEndPage()
- จากนั้น เรียกใช้เมธอด doConvert() เพื่อแสดงผลหน้าที่เลือกเป็นรูปภาพ
- ถัดไป บันทึกภาพในวง
- จากนั้น สร้างอินสแตนซ์ของคลาส BarCodeReader ด้วยพาธไฟล์รูปภาพที่บันทึกไว้
- หลังจากนั้น เรียกเมธอด readBarCodes() เพื่อรับออบเจกต์ BarCodeResult
- สุดท้าย แสดงข้อมูลบาร์โค้ด
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีแปลงหน้า PDF เป็นรูปภาพและอ่านบาร์โค้ดโดยใช้ Java
// ตัวอย่างโค้ดต่อไปนี้แสดงวิธีแปลงหน้า PDF เป็นรูปภาพด้วย PDF Convertor และอ่านบาร์โค้ด
// เส้นทางไปยังเอกสาร
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);
// ตั้งค่าความละเอียดของหน้า
// 300 dpi เป็นความละเอียดมาตรฐาน
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(("-------------------------------"));
}
}
แยกและอ่านบาร์โค้ดจาก PDF โดยใช้ Java
ในทำนองเดียวกัน เรายังสามารถจดจำภาพบาร์โค้ดที่ฝังอยู่ในหน้า PDF โดยใช้คลาส PdfExtractor อนุญาตให้แยกรูปภาพจาก PDF จากนั้นเราจะอ่านข้อมูลบาร์โค้ดจากรูปภาพที่แยกออกมา
เราสามารถอ่านบาร์โค้ดจากภาพที่แยกออกมาโดยทำตามขั้นตอนด้านล่าง:
- ขั้นแรก สร้างอินสแตนซ์ของคลาส PdfExtractor
- ถัดไป ผูกเอกสาร PDF ที่ป้อนโดยใช้เมธอด bindPdf()
- จากนั้นตั้งค่าช่วงของหน้าสำหรับการแยกรูปภาพ
- จากนั้น เรียกใช้เมธอด extractImage() เพื่อแยกรูปภาพ
- จากนั้นบันทึกภาพวนซ้ำ
- จากนั้น สร้างอินสแตนซ์ของคลาส BarCodeReader ด้วยพาธรูปภาพ
- หลังจากนั้น เรียกเมธอด readBarCodes() เพื่อรับออบเจกต์ BarCodeResult
- สุดท้ายแสดงข้อมูลบาร์โค้ด
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีแยกและอ่านภาพบาร์โค้ดจากเอกสาร PDF โดยใช้ Java
// ตัวอย่างโค้ดต่อไปนี้แสดงวิธีแปลงหน้า PDF เป็นรูปภาพด้วย PdfExtractor และอ่านบาร์โค้ด
// เส้นทางไปยังเอกสาร
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(("-------------------------------"));
}
}
อ่านบาร์โค้ดจาก PDF โดยใช้ PngDevice ใน Java
เรายังสามารถอ่านบาร์โค้ดได้ด้วยการแปลงหน้าของเอกสาร PDF เป็นภาพ PNG โดยใช้คลาส PngDevice ของ API มันมีเมธอด กระบวนการ (หน้าเพจ, เอาต์พุต OutputStream) ที่แปลงหน้าเป็น PNG และบันทึกไว้ในเอาต์พุตสตรีม เมธอด processToBufferedImage(Page page) ของคลาสนี้จะแปลงหน้าเป็น BufferedImage
เราสามารถอ่านบาร์โค้ดจากหน้า PDF ที่แปลงเป็นภาพ PNG โดยทำตามขั้นตอนด้านล่าง:
- ขั้นแรก ให้โหลดเอกสาร PDF โดยใช้คลาส Document
- จากนั้น สร้างอินสแตนซ์ของคลาส PngDevice
- จากนั้นวนซ้ำทุกหน้าและเรียกใช้เมธอด processToBufferedImage() เพื่อเรนเดอร์รูปภาพ
- จากนั้น สร้างอินสแตนซ์ของคลาส BarCodeReader ด้วยวัตถุ BufferedImage
- หลังจากนั้น เรียกเมธอด readBarCodes() เพื่อรับออบเจกต์ BarCodeResult
- สุดท้ายแสดงข้อมูลบาร์โค้ด
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการแปลงหน้า PDF และอ่านบาร์โค้ดโดยใช้ Java
// ตัวอย่างโค้ดต่อไปนี้แสดงวิธีแปลงหน้า PDF เป็นรูปภาพด้วย PngDevice และอ่านบาร์โค้ด
// เส้นทางไปยังเอกสาร
String file = "C:\\Files\\BarCode\\sample-PDF-with-Barcodes.pdf";
// โหลดเอกสาร PDF
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);
// สร้างอุปกรณ์ PNG ด้วยความละเอียดมาตรฐาน 300 dpi
com.aspose.pdf.devices.PngDevice pngDevice = new com.aspose.pdf.devices.PngDevice(new com.aspose.pdf.devices.Resolution(300));
// ดำเนินการหน้า PDF ทั้งหมดโดยเริ่มจากหน้าที่ 1
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(("-------------------------------"));
}
}
ค้นหาและอ่านภาพบาร์โค้ดจาก PDF โดยใช้ Java
เราสามารถค้นหาและแยกภาพบาร์โค้ดจากเอกสาร PDF โดยใช้คลาส ImagePlacementAbsorber ทำการค้นหาการใช้ภาพและให้การเข้าถึงผลการค้นหาผ่านคอลเลกชัน ImagePlacements วิธีนี้ทำให้สามารถจดจำบาร์โค้ดด้วยความละเอียดดั้งเดิมได้ ข้อเสียเพียงอย่างเดียวคืออาจไม่รู้จักรูปแบบเวกเตอร์อย่างถูกต้อง
เราสามารถค้นหาและอ่านบาร์โค้ดได้จากเอกสาร PDF โดยทำตามขั้นตอนด้านล่าง:
- ขั้นแรก ให้โหลดเอกสาร PDF โดยใช้คลาส Document
- จากนั้น สร้างอินสแตนซ์ของคลาส ImagePlacementAbsorber
- จากนั้นเรียกใช้เมธอด visit() สำหรับแต่ละหน้าในลูป
- ถัดไป วนซ้ำรูปภาพทั้งหมดที่พบในคอลเลกชัน ImagePlacements
- จากนั้น บันทึกภาพไปยังสตรีมหน่วยความจำ
- จากนั้น สร้างอินสแตนซ์ของคลาส BarCodeReader ด้วยสตรีมออบเจกต์
- หลังจากนั้น เรียกเมธอด readBarCodes() เพื่อรับออบเจกต์ BarCodeResult
- สุดท้ายแสดงข้อมูลบาร์โค้ด
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีค้นหาและอ่านภาพบาร์โค้ดจาก PDF โดยใช้ Java
// ตัวอย่างรหัสนี้สาธิตวิธีการอ่านบาร์โค้ดจากเอกสาร PDF โดยใช้ ImagePlacementAbsorber
// เส้นทางไปยังเอกสาร
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();
// ประมวลผลหน้า PDF ทั้งหมดในเอกสารโดยเริ่มจากหน้า 1
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
นอกจากการอ่านบาร์โค้ดจาก PDF ใน Java แล้ว คุณยังสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ API โดยใช้ เอกสารประกอบสำหรับ Aspose.BarCode และ เอกสารประกอบสำหรับ Aspose.PDF ในกรณีที่มีความคลุมเครือ โปรดติดต่อเราได้ที่ ฟอรัมสนับสนุนฟรี