Dokumenty PDF takie jak faktury, paragony czy raporty mogą zawierać zakodowane informacje w postaci kodu kreskowego. Potrafimy programowo wykrywać, identyfikować i odczytywać kody kreskowe osadzone w dokumentach PDF. W tym artykule dowiemy się, jak odczytać kod kreskowy z dokumentu PDF za pomocą języka Java. Ponadto nauczymy się, jak wyodrębniać obrazy kodów kreskowych z dokumentów PDF w Javie.
Ten artykuł obejmuje następujące tematy:
- Java API do odczytu kodu kreskowego z PDF
- Odczytaj kod kreskowy z pliku PDF
- Konwertuj PDF na obraz i czytaj kod kreskowy
- Wyodrębnij i odczytaj kod kreskowy z pliku PDF
- Odczytaj kod kreskowy z pliku PDF za pomocą PngDevice
- Znajdź i przeczytaj obraz kodu kreskowego z pliku PDF
Java API do odczytu kodu kreskowego z pliku PDF
Aby odczytać kod kreskowy z dokumentu PDF, będziemy postępować zgodnie z dwuetapową procedurą. Najpierw użyjemy API Aspose.PDF for Java do załadowania dokumentu PDF i renderowania jego stron do obrazów rastrowych. Następnie odczytamy kod kreskowy z wyrenderowanych obrazów za pomocą API Aspose.BarCode for Java.
Pobierz plik JAR interfejsów API lub dodaj następującą konfigurację pom.xml w aplikacji Java opartej na 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>
Czytaj kod kreskowy z pliku PDF przy użyciu języka Java
Aspose.PDF API udostępnia klasę Document reprezentującą dokument PDF. Metoda convertToPNGMemoryStream() interfejsu API renderuje stronę PDF na strumień obrazu w tablicy byte[]. Aspose.BarCode API udostępnia klasę BarCodeReader, która umożliwia wykonanie operacji readBarCodes w celu wykrycia kodu kreskowego. Klasa BarCodeResult przechowuje wykryte informacje o kodzie kreskowym, takie jak typ kodu kreskowego, tekst kodu, region i inne parametry.
Możemy odczytać obrazy kodów kreskowych osadzone na dowolnej stronie dokumentu PDF, wykonując poniższe czynności:
- Najpierw załaduj dokument PDF za pomocą klasy Document.
- Następnie przejrzyj wszystkie strony i wyrenderuj do strumienia.
- Następnie utwórz instancję klasy BarCodeReader z obiektem stream.
- Następnie wywołaj metodę readBarCodes() w celu pobrania obiektu BarCodeResult.
- Na koniec pokaż informacje o kodzie kreskowym.
Poniższy przykład kodu pokazuje, jak odczytać kod kreskowy z dokumentu PDF przy użyciu języka Java.
// Ten przykład kodu demonstruje, jak odczytać kod kreskowy z dokumentu PDF przy użyciu języka Java.
// Ścieżka do dokumentu
String file = "C:\\Files\\BarCode\\sample-PDF-with-Barcodes.pdf";
// Załaduj dokument PDF
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);
// Kontynuuj wszystkie strony PDF, zaczynając od strony 1
for (int i = 1; i <= pdfDoc.getPages().size(); ++i)
{
// Renderuj stronę PDF do strumienia
byte[] ms = pdfDoc.getPages().get_Item(i).convertToPNGMemoryStream();
InputStream stream = new ByteArrayInputStream(ms);
// Rozpoznawaj kody kreskowe ze strumienia strony
BarCodeReader reader = new BarCodeReader(stream);
// Pokaż wyniki
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
Proszę pobierz wejściowy dokument PDF z kodem kreskowym używany w tym poście na blogu.
Konwertuj PDF na obraz i czytaj kod kreskowy za pomocą Java
Możemy również odczytać kod kreskowy z dokumentu PDF, konwertując strony PDF na obrazy. Klasa PdfConverter API umożliwia konwersję każdej strony pliku PDF na obraz. Następnie odczytamy informacje o kodzie kreskowym z przekonwertowanego obrazu.
Możemy odczytać kody kreskowe z przekonwertowanych stron PDF, wykonując poniższe czynności:
- Najpierw załaduj dokument PDF za pomocą klasy Document.
- Następnie utwórz instancję klasy PdfConverter.
- Opcjonalnie ustaw opcje renderowania za pomocą metody setBarcodeOptimization().
- Następnie ustaw rozdzielczość obrazu.
- Następnie określ zakres stron, które mają zostać zrenderowane w obrazy, używając metod setStartPage() i setEndPage().
- Następnie wywołaj metodę doConvert() w celu renderowania wybranych stron w obrazy.
- Następnie zapisz obrazy w pętli.
- Następnie utwórz instancję klasy BarCodeReader ze ścieżką pliku zapisanego obrazu.
- Następnie wywołaj metodę readBarCodes() w celu pobrania obiektu BarCodeResult.
- Na koniec pokaż informacje o kodzie kreskowym.
Poniższy przykład kodu pokazuje, jak konwertować strony PDF na obrazy i odczytywać kody kreskowe za pomocą języka Java.
// Poniższy przykład kodu pokazuje, jak konwertować strony PDF na obrazy za pomocą PDF Converter i odczytywać kody kreskowe.
// Ścieżka do dokumentu
String folderPath = "C:\\Files\\BarCode\\";
// Wprowadź ścieżkę pliku
String file = folderPath + "sample-PDF-with-Barcodes.pdf";
// Załaduj dokument PDF
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);
// Zainicjuj konwerter PDF
com.aspose.pdf.facades.PdfConverter pdfConverter = new com.aspose.pdf.facades.PdfConverter(pdfDoc);
// Ustaw optymalizację kodu kreskowego
pdfConverter.getRenderingOptions().setBarcodeOptimization(true);
// Ustaw rozdzielczość strony
// 300 dpi to standardowa rozdzielczość
pdfConverter.setResolution(new com.aspose.pdf.devices.Resolution(300));
// Ustaw renderowanie wszystkich stron na obrazy
pdfConverter.setStartPage(1); //starts from page 1
pdfConverter.setEndPage(pdfConverter.getDocument().getPages().size());
// Renderuj wybrane strony do obrazów
pdfConverter.doConvert();
int imageCount = 1;
while (pdfConverter.hasNextImage())
{
// Renderuj bieżącą stronę do obrazu
String strBarCodeImage = folderPath + imageCount + ".jpg";
pdfConverter.getNextImage(strBarCodeImage);
// Rozpoznaj kody kreskowe z renderowanego obrazu strony
BarCodeReader reader = new BarCodeReader(strBarCodeImage);
// Pokaż wyniki
for (BarCodeResult result : reader.readBarCodes()) {
System.out.println("CodeText: " + result.getCodeText());
System.out.println("Symbology type: " + result.getCodeType());
System.out.println(("-------------------------------"));
}
}
Wyodrębnij i odczytaj kod kreskowy z pliku PDF przy użyciu języka Java
Podobnie możemy również rozpoznawać obrazy kodów kreskowych osadzone na stronach PDF za pomocą klasy PdfExtractor. Pozwala wyodrębnić obrazy z PDF, a następnie odczytamy informacje o kodzie kreskowym z wyodrębnionego obrazu.
Możemy odczytać kody kreskowe z wyodrębnionych obrazów, wykonując czynności podane poniżej:
- Najpierw utwórz instancję klasy PdfExtractor.
- Następnie powiąż wejściowy dokument PDF za pomocą metody bindPdf().
- Następnie ustaw zakres stron do ekstrakcji obrazu.
- Następnie wywołaj metodę extractImage() w celu wyodrębnienia obrazów.
- Następnie zapisz obraz w pętli.
- Następnie utwórz instancję klasy BarCodeReader ze ścieżką obrazu.
- Następnie wywołaj metodę readBarCodes() w celu pobrania obiektu BarCodeResult.
- Na koniec pokaż informacje o kodzie kreskowym.
Poniższy przykład kodu pokazuje, jak wyodrębnić i odczytać obraz kodu kreskowego z dokumentu PDF przy użyciu języka Java.
// Poniższy przykład kodu pokazuje, jak konwertować strony PDF na obrazy za pomocą PdfExtractor i odczytywać kody kreskowe.
// Ścieżka do dokumentu
String folderPath = "C:\\Files\\BarCode\\";
// Plik wejściowy
String file = folderPath + "sample-PDF-with-Barcodes.pdf";
// Zwiąż dokument PDF
com.aspose.pdf.facades.PdfExtractor pdfExtractor = new com.aspose.pdf.facades.PdfExtractor();
pdfExtractor.bindPdf(file);
// Ustaw zakres stron do ekstrakcji obrazu
pdfExtractor.setStartPage(1);
pdfExtractor.setEndPage(3);
// Wyodrębnij obrazy
pdfExtractor.extractImage();
int imageCount = 1;
// Zapisuj obrazy do strumieniowego przesyłania w pętli
while (pdfExtractor.hasNextImage())
{
// Zapisać obraz
String strBarCodeImage = folderPath + imageCount + ".jpg";
pdfExtractor.getNextImage(strBarCodeImage);
// Rozpoznaj kody kreskowe z obrazu
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(("-------------------------------"));
}
}
Czytaj kod kreskowy z pliku PDF za pomocą PngDevice w Javie
Kody kreskowe możemy również odczytywać, konwertując strony dokumentu PDF na obrazy PNG za pomocą klasy PngDevice API. Zapewnia metodę process(Page page, OutputStream output), która konwertuje stronę do formatu PNG i zapisuje ją w strumieniu wyjściowym. Metoda processToBufferedImage(Page page) tej klasy konwertuje stronę na BufferedImage.
Możemy odczytać kody kreskowe z przekonwertowanych stron PDF jako obrazy PNG, wykonując poniższe czynności:
- Najpierw załaduj dokument PDF za pomocą klasy Document.
- Następnie utwórz instancję klasy PngDevice.
- Następnie przejrzyj wszystkie strony i wywołaj metodę processToBufferedImage() w celu wyrenderowania obrazu.
- Następnie utwórz instancję klasy BarCodeReader z obiektem BufferedImage.
- Następnie wywołaj metodę readBarCodes() w celu pobrania obiektu BarCodeResult.
- Na koniec pokaż informacje o kodzie kreskowym.
Poniższy przykład kodu pokazuje, jak konwertować strony PDF i odczytywać kody kreskowe przy użyciu języka Java.
// Poniższy przykład kodu pokazuje, jak konwertować strony PDF na obrazy za pomocą PngDevice i odczytywać kody kreskowe.
// Ścieżka do dokumentu
String file = "C:\\Files\\BarCode\\sample-PDF-with-Barcodes.pdf";
// Załaduj dokument PDF
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);
// Utwórz urządzenie PNG o standardowej rozdzielczości 300 dpi
com.aspose.pdf.devices.PngDevice pngDevice = new com.aspose.pdf.devices.PngDevice(new com.aspose.pdf.devices.Resolution(300));
// Kontynuuj wszystkie strony PDF, zaczynając od strony 1
for (int i = 1; i <= pdfDoc.getPages().size(); ++i)
{
// Renderuj stronę PDF do buforowanego obrazu
BufferedImage img = pngDevice.processToBufferedImage(pdfDoc.getPages().get_Item(i));
// Rozpoznaj kod kreskowy z renderowanego obrazu strony
BarCodeReader reader = new BarCodeReader(img);
// Pokaż wyniki
for (BarCodeResult result : reader.readBarCodes()) {
System.out.println("CodeText: " + result.getCodeText());
System.out.println("Symbology type: " + result.getCodeType());
System.out.println(("-------------------------------"));
}
}
Znajdź i odczytaj obrazy kodów kreskowych z plików PDF przy użyciu języka Java
Możemy wyszukiwać i wyodrębniać obrazy kodów kreskowych z dokumentów PDF za pomocą klasy ImagePlacementAbsorber. Wykonuje wyszukiwanie użycia obrazu i zapewnia dostęp do wyników wyszukiwania za pośrednictwem kolekcji ImagePlacements. Metoda ta pozwala na rozpoznawanie kodów kreskowych z oryginalną rozdzielczością. Jedyną wadą jest to, że może nie rozpoznawać poprawnie formatów wektorowych.
Możemy znaleźć i odczytać kody kreskowe z dokumentów PDF, wykonując czynności podane poniżej:
- Najpierw załaduj dokument PDF za pomocą klasy Document.
- Następnie utwórz instancję klasy ImagePlacementAbsorber.
- Następnie wywołaj metodę visit() dla każdej strony w pętli.
- Następnie przejrzyj wszystkie obrazy znalezione w kolekcji ImagePlacements.
- Następnie zapisz obraz w strumieniu pamięci.
- Następnie utwórz instancję klasy BarCodeReader z obiektem stream.
- Następnie wywołaj metodę readBarCodes() w celu pobrania obiektu BarCodeResult.
- Na koniec pokaż informacje o kodzie kreskowym.
Poniższy przykład kodu pokazuje, jak znaleźć i odczytać obrazy kodów kreskowych z pliku PDF przy użyciu języka Java.
// Ten przykład kodu demonstruje, jak odczytać kod kreskowy z dokumentu PDF przy użyciu ImagePlacementAbsorber.
// Ścieżka do dokumentu
String file = "C:\\Files\\BarCode\\sample-PDF-with-Barcodes.pdf";
// Załaduj dokument PDF
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);
// Zainicjuj ImagePlacementAbsorber
com.aspose.pdf.ImagePlacementAbsorber imagePlacementAbsorber = new com.aspose.pdf.ImagePlacementAbsorber();
// Przetwórz wszystkie strony PDF w dokumencie, zaczynając od strony 1
for (int i = 1; i <= pdfDoc.getPages().size(); ++i)
{
// Odwiedź stronę, aby utworzyć ekstraktor obrazu
imagePlacementAbsorber.visit(pdfDoc.getPages().get_Item(i));
// Wyodrębnij wszystkie obrazy ze strony PDF
for (com.aspose.pdf.ImagePlacement imagePlacement : imagePlacementAbsorber.getImagePlacements()) {
// Renderuj stronę PDF do strumienia
byte[] ms = pdfDoc.getPages().get_Item(i).convertToPNGMemoryStream();
InputStream stream = new ByteArrayInputStream(ms);
// Rozpoznaj kod kreskowy ze strumienia strony
BarCodeReader reader = new BarCodeReader(stream);
// Pokaż wyniki
for (BarCodeResult result : reader.readBarCodes()) {
System.out.println("CodeText: " + result.getCodeText());
System.out.println("Symbology type: " + result.getCodeType());
System.out.println(("-------------------------------"));
}
}
}
Uzyskaj bezpłatną licencję
Możesz uzyskać bezpłatną tymczasową licencję, aby wypróbować biblioteki bez ograniczeń ewaluacyjnych.
Wniosek
W tym artykule dowiedzieliśmy się
- jak wykrywać i odczytywać kody kreskowe z dokumentów PDF;
- różne metody wyodrębniania obrazów z dokumentu PDF;
- do dekodowania osadzonego kodu kreskowego w Javie.
Oprócz odczytywania kodu kreskowego z pliku PDF w Javie, możesz dowiedzieć się więcej o interfejsach API, korzystając z dokumentacji dla Aspose.BarCode i dokumentacji dla Aspose.PDF. W przypadku jakichkolwiek niejasności prosimy o kontakt na naszym bezpłatnym forum pomocy technicznej.