Читання штрих-коду з PDF-файлу в Java

PDF документи, такі як рахунки-фактури, квитанції або звіти, можуть містити закодовану інформацію у вигляді штрих-коду. Ми можемо програмно виявляти, ідентифікувати та зчитувати штрих-коди, вбудовані в PDF-документи. У цій статті ми навчимося читати штрих-код із документа PDF за допомогою Java. Крім того, ми навчимося видобувати зображення штрих-коду з PDF-документів на Java.

Ця стаття охоплюватиме такі теми:

  1. API Java для читання штрих-коду з PDF
  2. Прочитати штрих-код із PDF
  3. Перетворення PDF на зображення та читання штрих-коду
  4. Видобути та прочитати штрих-код із PDF
  5. Прочитайте штрих-код із PDF за допомогою PngDevice
  6. Знайти та прочитати зображення штрих-коду в 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, виконавши наведені нижче дії.

  1. По-перше, завантажте PDF-документ за допомогою класу Document.
  2. Далі прокрутіть усі сторінки та відтворіть у потоці.
  3. Потім створіть екземпляр класу BarCodeReader з об’єктом потоку.
  4. Після цього викличте метод readBarCodes(), щоб отримати об’єкт BarCodeResult.
  5. Нарешті, покажіть інформацію про штрих-код.

У наведеному нижче прикладі коду показано, як читати штрих-код із документа 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-сторінок, виконавши наведені нижче дії.

  1. По-перше, завантажте PDF-документ за допомогою класу Document.
  2. Далі створіть екземпляр класу PdfConverter.
  3. За бажанням установіть параметри візуалізації за допомогою setBarcodeOptimization().
  4. Потім встановіть роздільну здатність зображення.
  5. Далі вкажіть діапазон сторінок для візуалізації в зображення за допомогою setStartPage() і setEndPage().
  6. Потім викличте метод doConvert(), щоб відобразити вибрані сторінки в зображення.
  7. Далі збережіть зображення в циклі.
  8. Потім створіть екземпляр класу BarCodeReader із збереженим шляхом до файлу зображення.
  9. Після цього викличте метод readBarCodes(), щоб отримати об’єкт BarCodeResult.
  10. Нарешті, покажіть інформацію про штрих-код.

У наведеному нижче прикладі коду показано, як конвертувати сторінки 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-файлу, а потім ми будемо зчитувати інформацію про штрих-код із вилученого зображення.

Ми можемо зчитувати штрих-коди з витягнутих зображень, виконавши наведені нижче дії.

  1. По-перше, створіть екземпляр класу PdfExtractor.
  2. Потім зв’яжіть вхідний PDF-документ за допомогою методу bindPdf().
  3. Потім встановіть діапазон сторінок для вилучення зображення.
  4. Потім викличте метод extractImage(), щоб витягти зображення.
  5. Потім збережіть зображення в циклі.
  6. Далі створіть екземпляр класу BarCodeReader із шляхом до зображення.
  7. Після цього викличте метод readBarCodes(), щоб отримати об’єкт BarCodeResult.
  8. Нарешті, покажіть інформацію про штрих-код.

У наведеному нижче прикладі коду показано, як видобути та прочитати зображення штрих-коду з документа 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, виконавши наведені нижче дії.

  1. По-перше, завантажте PDF-документ за допомогою класу Document.
  2. Далі створіть екземпляр класу PngDevice.
  3. Потім перегляньте всі сторінки та викличте метод processToBufferedImage(), щоб відобразити зображення.
  4. Далі створіть екземпляр класу BarCodeReader з об’єктом BufferedImage.
  5. Після цього викличте метод readBarCodes(), щоб отримати об’єкт BarCodeResult.
  6. Нарешті, покажіть інформацію про штрих-код.

У наведеному нижче прикладі коду показано, як конвертувати 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-документів, виконавши наведені нижче дії.

  1. По-перше, завантажте PDF-документ за допомогою класу Document.
  2. Далі створіть екземпляр класу ImagePlacementAbsorber.
  3. Потім викликайте метод visit() для кожної сторінки в циклі.
  4. Далі перегляньте всі зображення, знайдені в колекції ImagePlacements.
  5. Потім збережіть зображення в потік пам’яті.
  6. Далі створіть екземпляр класу BarCodeReader з об’єктом потоку.
  7. Після цього викличте метод readBarCodes(), щоб отримати об’єкт BarCodeResult.
  8. Нарешті, покажіть інформацію про штрих-код.

У наведеному нижче прикладі коду показано, як знайти та прочитати зображення штрих-кодів із 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. У разі будь-яких неясностей зв’яжіться з нами на нашому безкоштовному форумі підтримки.

Дивись також