Чтение штрих-кода из PDF в Java

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

Эта статья должна охватывать следующие темы:

  1. Java API для чтения штрих-кода из PDF
  2. Чтение штрих-кода из PDF
  3. Преобразовать PDF в изображение и прочитать штрих-код
  4. Извлечь и прочитать штрих-код из PDF
  5. Чтение штрих-кода из PDF с помощью PngDevice
  6. Найти и прочитать изображение штрих-кода из PDF

Java API для чтения штрих-кода из PDF

Чтобы прочитать штрих-код из документа PDF, мы будем следовать двухэтапной процедуре. Во-первых, мы будем использовать API Aspose.PDF для Java для загрузки PDF-документа и преобразования его страниц в растровые изображения. После этого мы будем считывать штрих-код с отрендеренных изображений с помощью API Aspose.BarCode for Java.

Пожалуйста, [загрузите JAR-файл API]]10 или добавьте следующую конфигурацию 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-документ. Метод API convertToPNGMemoryStream() преобразует страницу PDF в поток изображения в массиве byte[]. Aspose.BarCode API предоставляет класс 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 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, а затем мы читаем информацию о штрих-коде из извлеченного изображения.

Мы можем прочитать штрих-коды из извлеченных изображений, выполнив следующие шаги:

  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 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, выполнив следующие действия:

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

Смотрите также