Czytaj kod kreskowy z pliku PDF w Javie

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:

  1. Java API do odczytu kodu kreskowego z PDF
  2. Odczytaj kod kreskowy z pliku PDF
  3. Konwertuj PDF na obraz i czytaj kod kreskowy
  4. Wyodrębnij i odczytaj kod kreskowy z pliku PDF
  5. Odczytaj kod kreskowy z pliku PDF za pomocą PngDevice
  6. 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:

  1. Najpierw załaduj dokument PDF za pomocą klasy Document.
  2. Następnie przejrzyj wszystkie strony i wyrenderuj do strumienia.
  3. Następnie utwórz instancję klasy BarCodeReader z obiektem stream.
  4. Następnie wywołaj metodę readBarCodes() w celu pobrania obiektu BarCodeResult.
  5. 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:

  1. Najpierw załaduj dokument PDF za pomocą klasy Document.
  2. Następnie utwórz instancję klasy PdfConverter.
  3. Opcjonalnie ustaw opcje renderowania za pomocą metody setBarcodeOptimization().
  4. Następnie ustaw rozdzielczość obrazu.
  5. Następnie określ zakres stron, które mają zostać zrenderowane w obrazy, używając metod setStartPage() i setEndPage().
  6. Następnie wywołaj metodę doConvert() w celu renderowania wybranych stron w obrazy.
  7. Następnie zapisz obrazy w pętli.
  8. Następnie utwórz instancję klasy BarCodeReader ze ścieżką pliku zapisanego obrazu.
  9. Następnie wywołaj metodę readBarCodes() w celu pobrania obiektu BarCodeResult.
  10. 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:

  1. Najpierw utwórz instancję klasy PdfExtractor.
  2. Następnie powiąż wejściowy dokument PDF za pomocą metody bindPdf().
  3. Następnie ustaw zakres stron do ekstrakcji obrazu.
  4. Następnie wywołaj metodę extractImage() w celu wyodrębnienia obrazów.
  5. Następnie zapisz obraz w pętli.
  6. Następnie utwórz instancję klasy BarCodeReader ze ścieżką obrazu.
  7. Następnie wywołaj metodę readBarCodes() w celu pobrania obiektu BarCodeResult.
  8. 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:

  1. Najpierw załaduj dokument PDF za pomocą klasy Document.
  2. Następnie utwórz instancję klasy PngDevice.
  3. Następnie przejrzyj wszystkie strony i wywołaj metodę processToBufferedImage() w celu wyrenderowania obrazu.
  4. Następnie utwórz instancję klasy BarCodeReader z obiektem BufferedImage.
  5. Następnie wywołaj metodę readBarCodes() w celu pobrania obiektu BarCodeResult.
  6. 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:

  1. Najpierw załaduj dokument PDF za pomocą klasy Document.
  2. Następnie utwórz instancję klasy ImagePlacementAbsorber.
  3. Następnie wywołaj metodę visit() dla każdej strony w pętli.
  4. Następnie przejrzyj wszystkie obrazy znalezione w kolekcji ImagePlacements.
  5. Następnie zapisz obraz w strumieniu pamięci.
  6. Następnie utwórz instancję klasy BarCodeReader z obiektem stream.
  7. Następnie wywołaj metodę readBarCodes() w celu pobrania obiektu BarCodeResult.
  8. 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.

Zobacz też