Barcode aus PDF in Java lesen

PDF Dokumente wie Rechnungen, Quittungen oder Berichte können verschlüsselte Informationen in Form eines Strichcodes enthalten. Wir können Barcodes, die in PDF-Dokumente eingebettet sind, programmgesteuert erkennen, identifizieren und lesen. In diesem Artikel erfahren Sie, wie Sie mit Java einen Barcode aus einem PDF-Dokument lesen. Außerdem lernen wir, wie man Barcode-Bilder aus PDF-Dokumenten in Java extrahiert.

Dieser Artikel soll folgende Themen behandeln:

  1. Java-API zum Lesen von Barcodes aus PDF
  2. Barcode aus PDF lesen
  3. PDF in Bild konvertieren und Barcode lesen
  4. Barcode aus PDF extrahieren und lesen
  5. Barcode aus PDF mit PngDevice lesen
  6. Barcode-Bild aus PDF suchen und lesen

Java-API zum Lesen von Barcodes aus PDF

Um einen Barcode aus einem PDF-Dokument zu lesen, folgen wir einem zweistufigen Verfahren. Zuerst werden wir die API Aspose.PDF for Java verwenden, um ein PDF-Dokument zu laden und seine Seiten in Rasterbilder zu rendern. Danach lesen wir den Barcode aus den gerenderten Bildern mit der API Aspose.BarCode for Java.

Bitte laden Sie die JAR-Datei der APIs herunter oder fügen Sie die folgende pom.xml-Konfiguration in einer Maven-basierten Java-Anwendung hinzu.

<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>

Barcode aus PDF mit Java lesen

Die Aspose.PDF-API stellt die Klasse Document bereit, die ein PDF-Dokument darstellt. Die Methode convertToPNGMemoryStream() der API rendert eine PDF-Seite in einen Bildstream im byte[]-Array. Die Aspose.BarCode-API stellt die Klasse BarCodeReader bereit, mit der wir readBarCodes-Operationen ausführen können, um einen Barcode zu erkennen. Die Klasse BarCodeResult speichert erkannte Barcodeinformationen wie Barcodetyp, Codetext, Region und andere Parameter.

Wir können Barcode-Bilder lesen, die auf allen Seiten des PDF-Dokuments eingebettet sind, indem wir die folgenden Schritte ausführen:

  1. Laden Sie zunächst ein PDF-Dokument mit der Document-Klasse.
  2. Als nächstes durchlaufen Sie alle Seiten und rendern in den Stream.
  3. Erstellen Sie dann eine Instanz der BarCodeReader-Klasse mit einem Stream-Objekt.
  4. Rufen Sie danach die Methode readBarCodes() auf, um das Objekt BarCodeResult zu erhalten.
  5. Zeigen Sie schließlich die Barcode-Informationen an.

Das folgende Codebeispiel zeigt, wie ein Barcode aus einem PDF-Dokument mit Java gelesen wird.

// Dieses Codebeispiel zeigt, wie ein Barcode aus einem PDF-Dokument mit Java gelesen wird.
// Der Pfad zum Dokument
String file = "C:\\Files\\BarCode\\sample-PDF-with-Barcodes.pdf";

// Laden Sie ein PDF-Dokument
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);

// Fahren Sie mit allen PDF-Seiten fort, beginnend mit Seite 1
for (int i = 1; i <= pdfDoc.getPages().size(); ++i)
{
    // PDF-Seite im Stream rendern
    byte[] ms = pdfDoc.getPages().get_Item(i).convertToPNGMemoryStream();
    InputStream stream = new ByteArrayInputStream(ms);

    // Barcodes aus dem Seitenstrom erkennen
    BarCodeReader reader = new BarCodeReader(stream);

    // Zeige Ergebnisse
  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

Bitte laden Sie das PDF-Eingabedokument mit Barcode herunter, das in diesem Blogbeitrag verwendet wird.

Konvertieren Sie PDF in ein Bild und lesen Sie Barcodes mit Java

Wir können auch einen Barcode aus dem PDF-Dokument lesen, indem wir PDF-Seiten in Bilder umwandeln. Die Klasse PdfConverter der API ermöglicht das Konvertieren jeder Seite einer PDF-Datei in ein Bild. Danach lesen wir die Barcode-Informationen aus dem konvertierten Bild.

Wir können Barcodes von konvertierten PDF-Seiten lesen, indem wir die folgenden Schritte ausführen:

  1. Laden Sie zunächst ein PDF-Dokument mit der Document-Klasse.
  2. Erstellen Sie als Nächstes eine Instanz der PdfConverter-Klasse.
  3. Legen Sie optional Rendering-Optionen mit setBarcodeOptimization() fest.
  4. Stellen Sie dann die Bildauflösung ein.
  5. Geben Sie als Nächstes mithilfe von setStartPage() und setEndPage() einen Bereich von Seiten an, die in Bilder gerendert werden sollen.
  6. Rufen Sie dann die Methode doConvert() auf, um ausgewählte Seiten in Bilder zu rendern.
  7. Als nächstes speichern Sie die Bilder in einer Schleife.
  8. Erstellen Sie dann eine Instanz der BarCodeReader-Klasse mit dem gespeicherten Bilddateipfad.
  9. Rufen Sie danach die Methode readBarCodes() auf, um das Objekt BarCodeResult zu erhalten.
  10. Zeigen Sie abschließend die Barcode-Informationen an.

Das folgende Codebeispiel zeigt, wie man PDF-Seiten in Bilder umwandelt und Barcodes mit Java liest.

// Das folgende Codebeispiel zeigt, wie Sie mit PDF Converter PDF-Seiten in Bilder umwandeln und Barcodes lesen.
// Der Pfad zum Dokument
String folderPath = "C:\\Files\\BarCode\\";

// Pfad der Eingabedatei
String file = folderPath + "sample-PDF-with-Barcodes.pdf";

// Laden Sie ein PDF-Dokument
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);

// Initialisieren Sie einen PdfConvertor
com.aspose.pdf.facades.PdfConverter pdfConverter = new com.aspose.pdf.facades.PdfConverter(pdfDoc);

// Barcode-Optimierung einstellen
pdfConverter.getRenderingOptions().setBarcodeOptimization(true);

// Seitenauflösung festlegen
// 300 dpi ist die Standardauflösung
pdfConverter.setResolution(new com.aspose.pdf.devices.Resolution(300));

// Stellen Sie alle Seiten so ein, dass sie in Bilder gerendert werden
pdfConverter.setStartPage(1); //starts from page 1
pdfConverter.setEndPage(pdfConverter.getDocument().getPages().size());

// Ausgewählte Seiten in die Bilder rendern
pdfConverter.doConvert();
int imageCount = 1;

while (pdfConverter.hasNextImage())
{
    // Aktuelle Seite in Bild rendern
    String strBarCodeImage = folderPath + imageCount + ".jpg";
    pdfConverter.getNextImage(strBarCodeImage);

    // Barcodes aus dem gerenderten Bild der Seite erkennen
    BarCodeReader reader = new BarCodeReader(strBarCodeImage);

    // Zeige Ergebnisse
    for (BarCodeResult result : reader.readBarCodes()) {
    System.out.println("CodeText: " + result.getCodeText());
    System.out.println("Symbology type: " + result.getCodeType());
    System.out.println(("-------------------------------"));
  }
}

Barcode aus PDF mit Java extrahieren und lesen

In ähnlicher Weise können wir mit der Klasse PdfExtractor auch Barcode-Bilder erkennen, die in PDF-Seiten eingebettet sind. Es ermöglicht das Extrahieren von Bildern aus PDF, und dann lesen wir die Barcode-Informationen aus dem extrahierten Bild.

Wir können Barcodes aus den extrahierten Bildern lesen, indem wir die folgenden Schritte ausführen:

  1. Erstellen Sie zunächst eine Instanz der PdfExtractor-Klasse.
  2. Binden Sie als Nächstes das Eingabe-PDF-Dokument mit der Methode bindPdf().
  3. Legen Sie dann den Seitenbereich für die Bildextraktion fest.
  4. Rufen Sie als Nächstes die Methode extractImage() auf, um die Bilder zu extrahieren.
  5. Speichern Sie das Bild dann in einer Schleife.
  6. Erstellen Sie als Nächstes eine Instanz der BarCodeReader-Klasse mit dem Bildpfad.
  7. Rufen Sie danach die Methode readBarCodes() auf, um das Objekt BarCodeResult zu erhalten.
  8. Zeigen Sie schließlich die Barcode-Informationen an.

Das folgende Codebeispiel zeigt, wie Sie mithilfe von Java ein Barcode-Bild aus einem PDF-Dokument extrahieren und lesen.

// Das folgende Codebeispiel zeigt, wie man mit PdfExtractor PDF-Seiten in Bilder umwandelt und Barcodes liest.
// Der Pfad zum Dokument
String folderPath = "C:\\Files\\BarCode\\";

// Eingabedatei
String file = folderPath + "sample-PDF-with-Barcodes.pdf";

// Binden Sie ein PDF-Dokument
com.aspose.pdf.facades.PdfExtractor pdfExtractor = new com.aspose.pdf.facades.PdfExtractor();
pdfExtractor.bindPdf(file);

// Legen Sie den Seitenbereich für die Bildextraktion fest
pdfExtractor.setStartPage(1);
pdfExtractor.setEndPage(3);

// Extrahieren Sie die Bilder
pdfExtractor.extractImage();

int imageCount = 1;

// Speichern Sie Bilder, um sie in einer Schleife zu streamen
while (pdfExtractor.hasNextImage())
{
  // Bild speichern
  String strBarCodeImage = folderPath + imageCount + ".jpg";
  pdfExtractor.getNextImage(strBarCodeImage);

  // Erkennen Sie die Barcodes aus dem Bild
  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(("-------------------------------"));
  }
}

Barcode aus PDF mit PngDevice in Java lesen

Wir können Barcodes auch lesen, indem wir die Seiten des PDF-Dokuments mithilfe der Klasse PngDevice der API in PNG-Bilder konvertieren. Es bietet die Methode process(Page page, OutputStream), die die Seite in PNG konvertiert und im Ausgabestream speichert. Die Methode processToBufferedImage(Page page) dieser Klasse wandelt die Seite in BufferedImage um.

Wir können Barcodes von konvertierten PDF-Seiten als PNG-Bilder lesen, indem wir die folgenden Schritte ausführen:

  1. Laden Sie zunächst ein PDF-Dokument mit der Document-Klasse.
  2. Erstellen Sie als Nächstes eine Instanz der PngDevice-Klasse.
  3. Durchlaufen Sie dann alle Seiten und rufen Sie die Methode processToBufferedImage() auf, um das Bild zu rendern.
  4. Erstellen Sie als Nächstes eine Instanz der BarCodeReader-Klasse mit dem BufferedImage-Objekt.
  5. Rufen Sie danach die Methode readBarCodes() auf, um das Objekt BarCodeResult zu erhalten.
  6. Zeigen Sie schließlich die Barcode-Informationen an.

Das folgende Codebeispiel zeigt, wie Sie PDF-Seiten konvertieren und Barcodes mit Java lesen.

// Das folgende Codebeispiel zeigt, wie man mit PngDevice PDF-Seiten in Bilder umwandelt und Barcodes ausliest.
// Der Pfad zum Dokument
String file = "C:\\Files\\BarCode\\sample-PDF-with-Barcodes.pdf";

// Laden Sie ein PDF-Dokument
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);

// Erstellen Sie ein PNG-Gerät mit einer Standardauflösung von 300 dpi
com.aspose.pdf.devices.PngDevice pngDevice = new com.aspose.pdf.devices.PngDevice(new com.aspose.pdf.devices.Resolution(300));

// Fahren Sie mit allen PDF-Seiten fort, beginnend mit Seite 1
for (int i = 1; i <= pdfDoc.getPages().size(); ++i)
{
    // Rendert die PDF-Seite in das gepufferte Bild
    BufferedImage img = pngDevice.processToBufferedImage(pdfDoc.getPages().get_Item(i));

    // Barcode aus dem gerenderten Bild der Seite erkennen
    BarCodeReader reader = new BarCodeReader(img);

    // Zeige Ergebnisse
    for (BarCodeResult result : reader.readBarCodes()) {
    System.out.println("CodeText: " + result.getCodeText());
    System.out.println("Symbology type: " + result.getCodeType());
    System.out.println(("-------------------------------"));
  }
}

Finden und lesen Sie Barcode-Bilder aus PDF mit Java

Mit der Klasse ImagePlacementAbsorber können wir Barcode-Bilder aus PDF-Dokumenten finden und extrahieren. Es führt eine Suche nach der Bildnutzung durch und bietet Zugriff auf Suchergebnisse über die ImagePlacements-Sammlung. Diese Methode ermöglicht das Erkennen von Barcodes mit Originalauflösung. Der einzige Nachteil ist, dass es Vektorformate möglicherweise nicht richtig erkennt.

Wir können Barcodes aus den PDF-Dokumenten finden und lesen, indem wir die folgenden Schritte ausführen:

  1. Laden Sie zunächst ein PDF-Dokument mit der Document-Klasse.
  2. Erstellen Sie als Nächstes eine Instanz der ImagePlacementAbsorber-Klasse.
  3. Rufen Sie dann die Methode visit() für jede Seite in einer Schleife auf.
  4. Durchlaufen Sie als Nächstes alle in der ImagePlacements-Sammlung gefundenen Bilder.
  5. Speichern Sie dann das Bild im Speicherstream.
  6. Erstellen Sie als Nächstes eine Instanz der BarCodeReader-Klasse mit dem Stream-Objekt.
  7. Rufen Sie danach die Methode readBarCodes() auf, um das Objekt BarCodeResult zu erhalten.
  8. Zeigen Sie schließlich die Barcode-Informationen an.

Das folgende Codebeispiel zeigt, wie Barcode-Bilder aus einer PDF-Datei mit Java gesucht und gelesen werden.

// Dieses Codebeispiel zeigt, wie Sie mit ImagePlacementAbsorber einen Barcode aus einem PDF-Dokument lesen.
// Der Pfad zum Dokument
String file = "C:\\Files\\BarCode\\sample-PDF-with-Barcodes.pdf";

// Laden Sie ein PDF-Dokument
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);

// ImagePlacementAbsorber initialisieren
com.aspose.pdf.ImagePlacementAbsorber imagePlacementAbsorber = new com.aspose.pdf.ImagePlacementAbsorber();

// Verarbeiten Sie alle PDF-Seiten im Dokument ab Seite 1
for (int i = 1; i <= pdfDoc.getPages().size(); ++i)
{
    // Besuchen Sie die Seite zum Erstellen eines Bildextraktors
    imagePlacementAbsorber.visit(pdfDoc.getPages().get_Item(i));

    // Extrahieren Sie alle Bilder aus der PDF-Seite
    for (com.aspose.pdf.ImagePlacement imagePlacement : imagePlacementAbsorber.getImagePlacements()) {
      // PDF-Seite im Stream rendern
      byte[] ms = pdfDoc.getPages().get_Item(i).convertToPNGMemoryStream();
      InputStream stream = new ByteArrayInputStream(ms);

      // Barcode aus dem Seitenstrom erkennen
      BarCodeReader reader = new BarCodeReader(stream);

      // Zeige Ergebnisse
      for (BarCodeResult result : reader.readBarCodes()) {
        System.out.println("CodeText: " + result.getCodeText());
        System.out.println("Symbology type: " + result.getCodeType());
        System.out.println(("-------------------------------"));
      }
    }
}

Holen Sie sich eine kostenlose Lizenz

Sie können eine kostenlose temporäre Lizenz erhalten, um die Bibliotheken ohne Evaluierungseinschränkungen zu testen.

Fazit

In diesem Artikel haben wir gelernt

  • wie man Barcodes aus PDF-Dokumenten erkennt und liest;
  • verschiedene Methoden zum Extrahieren von Bildern aus einem PDF-Dokument;
  • um den eingebetteten Barcode in Java zu decodieren.

Neben dem Lesen eines Barcodes aus PDF in Java können Sie mehr über die APIs erfahren, indem Sie die Dokumentation für Aspose.BarCode und die Dokumentation für Aspose.PDF verwenden. Bei Unklarheiten können Sie sich gerne in unserem kostenlosen Support-Forum an uns wenden.

Siehe auch