PDF документи, такі як рахунки-фактури, квитанції або звіти, можуть містити закодовану інформацію у вигляді штрих-коду. Ми можемо програмно виявляти, ідентифікувати та зчитувати штрих-коди, вбудовані в PDF-документи. У цій статті ми навчимося читати штрих-код із документа PDF за допомогою Java. Крім того, ми навчимося видобувати зображення штрих-коду з PDF-документів на Java.
Ця стаття охоплюватиме такі теми:
- API Java для читання штрих-коду з PDF
- Прочитати штрих-код із PDF
- Перетворення PDF на зображення та читання штрих-коду
- Видобути та прочитати штрих-код із PDF
- Прочитайте штрих-код із PDF за допомогою PngDevice
- Знайти та прочитати зображення штрих-коду в PDF
Java API для читання штрих-коду з PDF
Щоб прочитати штрих-код із PDF-документа, ми виконаємо двоетапну процедуру. По-перше, ми використаємо Aspose.PDF for Java API для завантаження документа 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
API Aspose.PDF надає клас Document, який представляє документ PDF. Метод convertToPNGMemoryStream() API перетворює сторінку PDF у потік зображень у масиві byte[]. API Aspose.BarCode надає клас 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 Converter і читати штрих-коди.
// Шлях до документа
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 точок на дюйм є стандартною роздільною здатністю
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. Він забезпечує метод process(Page page, OutputStream output), який перетворює сторінку в 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 точок на дюйм
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
За допомогою класу ImagePlacementAbsorber ми можемо знаходити та витягувати зображення штрих-кодів із документів PDF. Він виконує пошук використання зображень і надає доступ до результатів пошуку через колекцію 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. У разі будь-яких неясностей зв’яжіться з нами на нашому безкоштовному форумі підтримки.