Документы PDF, такие как счета, квитанции или отчеты, могут содержать закодированную информацию в виде штрих-кода. Мы можем программно обнаруживать, идентифицировать и считывать штрих-коды, встроенные в PDF-документы. В этой статье мы узнаем, как читать штрих-код из документа PDF с помощью Java. Кроме того, мы узнаем, как извлекать изображения штрих-кода из PDF-документов на Java.
Эта статья должна охватывать следующие темы:
- Java API для чтения штрих-кода из PDF
- Чтение штрих-кода из PDF
- Преобразовать PDF в изображение и прочитать штрих-код
- Извлечь и прочитать штрих-код из PDF
- Чтение штрих-кода из PDF с помощью PngDevice
- Найти и прочитать изображение штрих-кода из 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-документа, выполнив следующие шаги:
- Во-первых, загрузите документ 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 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. Он предоставляет метод 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 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. В случае возникновения каких-либо неясностей, пожалуйста, свяжитесь с нами на нашем бесплатном форуме поддержки.