Barcode aus PDF in C# lesen

Wir können Barcodes generieren und zu PDF-Dokumenten hinzufügen, wie in meinem vorherigen Post beschrieben. In bestimmten Fällen müssen wir möglicherweise die in PDF-Dokumente eingebetteten Barcodes programmgesteuert erkennen und lesen. Es hilft, eingebettete Informationen in Form von Barcodes und QR-Codes aus PDF-Dokumenten wie Rechnungen, Quittungen oder Berichten zu entschlüsseln. In diesem Artikel erfahren Sie, wie Sie mit C# einen Barcode aus einem PDF-Dokument lesen.

Der Artikel soll folgende Themen behandeln:

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

C#-API zum Lesen von Barcodes aus PDF

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

Bitte laden Sie die DLL der API herunter oder installieren Sie sie mit NuGet.

PM> Install-Package Aspose.BarCode
PM> Install-Package Aspose.PDF

Barcode aus PDF mit C# lesen

Die Klasse Document der Aspose.PDF-API repräsentiert ein PDF-Dokument. Die Funktion ConvertToPNGMemoryStream() der API rendert eine PDF-Seite in einen PNG-Speicherstream. Die BarCodeReader-Klasse der Aspose.BarCode-API ermöglicht es uns, ReadBarCodes-Operationen auszuführen, um Barcodes 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. Durchlaufen Sie als Nächstes alle Seiten und rendern Sie sie in den Speicherstrom.
  3. Erstellen Sie dann eine Instanz der BarCodeReader-Klasse mit einem Stream-Objekt.
  4. Rufen Sie danach die ReadBarCodes()-Methode auf, um das BarCodeResult-Objekt zu erhalten.
  5. Zeigen Sie schließlich die Barcode-Informationen an.

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

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

// Laden Sie ein PDF-Dokument
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

// Fahren Sie mit allen PDF-Seiten fort, beginnend mit Seite 1
for (int i = 1; i <= pdfDoc.Pages.Count; ++i)
{
    // PDF-Seite im Stream rendern
    MemoryStream ms = pdfDoc.Pages[i].ConvertToPNGMemoryStream();
    ms.Position = 0;

    // Barcodes aus dem gerenderten Bild der Seite erkennen
    BarCodeReader reader = new BarCodeReader(ms);
    
    // Zeige Ergebnisse
    foreach (BarCodeResult result in reader.ReadBarCodes())
    {
        Console.WriteLine("Codetext found: " + result.CodeText);
        Console.WriteLine("Symbology: " + result.CodeType);
        Console.WriteLine("-------------------------------");
    }
}
Codetext found: Aspose.Barcode Pdf417 Example
Symbology: Pdf417
-------------------------------
Codetext found: Aspose.Barcode QR Example
Symbology: QR
-------------------------------
Codetext found: Aspose.Barcode DataMatrix Example
Symbology: DataMatrix
-------------------------------

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

PDF in Bild umwandeln und Barcodes mit C# lesen

Wir können Barcodes aus dem PDF-Dokument lesen, indem wir PDF-Seiten mit der Klasse PdfConverter in Bilder konvertieren. Es ermöglicht das Konvertieren jeder Seite einer PDF-Datei in ein Bild, und dann 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 wie BarcodeOptimization fest.
  4. Stellen Sie dann die Bildauflösung ein.
  5. Geben Sie als Nächstes StartPage und EndPage an, um eine Reihe von Seiten in Bilder zu rendern.
  6. Rufen Sie dann die Methode DoConvert() auf, um ausgewählte Seiten in Bilder zu rendern.
  7. Als nächstes speichern Sie das Bild, um es in einer Schleife zu streamen.
  8. Erstellen Sie dann eine Instanz der BarCodeReader-Klasse mit dem Stream-Objekt.
  9. Rufen Sie danach die ReadBarCodes()-Methode auf, um das BarCodeResult-Objekt zu erhalten.
  10. Zeigen Sie abschließend die Barcode-Informationen an.

Das folgende Codebeispiel zeigt, wie Sie PDF-Seiten in Bilder konvertieren und Barcodes mit C# lesen.

// Das folgende Codebeispiel zeigt, wie Sie mit PDF Converter PDF-Seiten in Bilder konvertieren und Barcodes mit C# lesen.
// Der Pfad zum Dokument
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// Laden Sie ein PDF-Dokument
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

// Initialisieren Sie einen PdfConvertor
Aspose.Pdf.Facades.PdfConverter pdfConverter = new Aspose.Pdf.Facades.PdfConverter(pdfDoc);

// Barcode-Optimierung einstellen
pdfConverter.RenderingOptions.BarcodeOptimization = true;

// Seitenauflösung festlegen
// 300 dpi ist die Standardauflösung
pdfConverter.Resolution = new Aspose.Pdf.Devices.Resolution(300);

// Stellen Sie alle Seiten so ein, dass sie in Bilder gerendert werden
pdfConverter.StartPage = 1; //starts from page 1
pdfConverter.EndPage = pdfConverter.Document.Pages.Count;

// Ausgewählte Seiten in die Bilder rendern
pdfConverter.DoConvert();
while (pdfConverter.HasNextImage())
{
    // Rendern Sie die aktuelle Seite in das Speicherstrombild
    MemoryStream ms = new MemoryStream();
    pdfConverter.GetNextImage(ms, ImageFormat.Png);
    ms.Position = 0;

    // Barcodes aus dem gerenderten Bild der Seite erkennen
    BarCodeReader reader = new BarCodeReader(ms);
    
    // Zeige Ergebnisse
    foreach (BarCodeResult result in reader.ReadBarCodes())
    {
        Console.WriteLine("Codetext found: " + result.CodeText);
        Console.WriteLine("Symbology: " + result.CodeType);
        Console.WriteLine("-------------------------------");
    }
}

Lesen Sie Barcodes aus PDF mit PngDevice in C#

Hier geht es um eine andere Methode, die der vorherigen ähnlich ist. Der einzige Unterschied besteht darin, dass wir bei dieser Methode die Seiten des PDF-Dokuments mithilfe der Klasse PngDevice der API in Bilder konvertieren. Es ermöglicht das Konvertieren von Seiten des PDF-Dokuments in PNG-Bilder.

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 Process() auf, um sie in den Stream zu rendern.
  4. Erstellen Sie als Nächstes eine Instanz der BarCodeReader-Klasse mit dem Stream-Objekt.
  5. Rufen Sie danach die ReadBarCodes()-Methode auf, um das BarCodeResult-Objekt zu erhalten.
  6. Zeigen Sie schließlich die Barcode-Informationen an.

Das folgende Codebeispiel zeigt, wie Sie PDF-Seiten in PNG-Bilder konvertieren und Barcodes mit C# lesen.

// Das folgende Codebeispiel zeigt, wie Sie mit PngDevice PDF-Seiten in Bilder konvertieren und Barcodes mit C# lesen.
// Der Pfad zum Dokument
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// Laden Sie ein PDF-Dokument
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

// Erstellen Sie ein PNG-Gerät mit einer Standardauflösung von 300 dpi
Aspose.Pdf.Devices.PngDevice pngDevice = new Aspose.Pdf.Devices.PngDevice(new Aspose.Pdf.Devices.Resolution(300));

// Fahren Sie mit allen PDF-Seiten fort, beginnend mit Seite 1
for (int i = 1; i <= pdfDoc.Pages.Count; ++i)
{
    // PDF-Seite im Stream rendern
    MemoryStream ms = new MemoryStream();
    pngDevice.Process(pdfDoc.Pages[i], ms);
    ms.Position = 0;

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

    // Zeige Ergebnisse
    foreach (BarCodeResult result in reader.ReadBarCodes())
    {
        Console.WriteLine("Codetext found: " + result.CodeText);
        Console.WriteLine("Symbology: " + result.CodeType);
        Console.WriteLine("-------------------------------");
    }
}

Barcode aus PDF mit C# extrahieren und lesen

Wir können auch Barcode-Bilder erkennen, die in PDF-Seiten eingebettet sind, indem wir die Klasse PdfExtractor verwenden. 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 dann das Bild, um es in einer Schleife zu streamen.
  6. Erstellen Sie als Nächstes eine Instanz der BarCodeReader-Klasse mit dem Stream-Objekt.
  7. Rufen Sie danach die ReadBarCodes()-Methode auf, um das BarCodeResult-Objekt zu erhalten.
  8. Zeigen Sie schließlich die Barcode-Informationen an.

Das folgende Codebeispiel zeigt, wie Sie mithilfe von C# ein Barcodebild aus einem PDF-Dokument extrahieren und lesen.

// Das folgende Codebeispiel zeigt, wie Sie mit PdfExtractor PDF-Seiten in Bilder konvertieren und Barcodes mit C# lesen.
// Der Pfad zum Dokument
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// Binden Sie ein PDF-Dokument
Aspose.Pdf.Facades.PdfExtractor pdfExtractor = new Aspose.Pdf.Facades.PdfExtractor();
pdfExtractor.BindPdf(file);

// Legen Sie den Seitenbereich für die Bildextraktion fest
pdfExtractor.StartPage = 1;
pdfExtractor.EndPage = 3;

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

// Speichern Sie Bilder, um sie in einer Schleife zu streamen
while (pdfExtractor.HasNextImage())
{
  // Bild zum Streamen speichern
  MemoryStream imageStream = new MemoryStream();
  pdfExtractor.GetNextImage(imageStream);
  imageStream.Position = 0;

  // Erkennen Sie die Barcodes aus dem obigen Bildstream
  BarCodeReader reader = new BarCodeReader(imageStream);
  foreach (BarCodeResult result in reader.ReadBarCodes())
  {
      Console.WriteLine("Codetext found: " + result.CodeText);
      Console.WriteLine("Symbology: " + result.CodeType);
      Console.WriteLine("-------------------------------");
  }
}

Finden und Lesen von Barcode-Bildern aus PDF mit C#

Mit der Klasse ImagePlacementAbsorber können wir auch Barcode-Bilder aus PDF-Dokumenten finden und extrahieren. Es repräsentiert ein Absorberobjekt von Bildplatzierungsobjekten. Es führt eine Suche nach Bildverwendungen durch und bietet Zugriff auf Suchergebnisse über die ImagePlacements-Sammlung. Diese Methode hilft Barcodes mit Originalauflösung zu erkennen. Es kann Vektorformate möglicherweise nicht richtig erkennen.

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 ReadBarCodes()-Methode auf, um das BarCodeResult-Objekt zu erhalten.
  8. Zeigen Sie schließlich die Barcode-Informationen an.

Das folgende Codebeispiel zeigt, wie Barcodebilder aus einer PDF-Datei mit C# 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
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

// ImagePlacementAbsorber initialisieren
Aspose.Pdf.ImagePlacementAbsorber imagePlacementAbsorber = new Aspose.Pdf.ImagePlacementAbsorber();

// Verarbeiten Sie alle PDF-Seiten im Dokument ab Seite 1
for (int i = 1; i <= pdfDoc.Pages.Count; ++i)
{
    // Besuchen Sie die Seite zum Erstellen eines Bildextraktors
    imagePlacementAbsorber.Visit(pdfDoc.Pages[i]);

    // Extrahieren Sie alle Bilder aus der PDF-Seite
    foreach (Aspose.Pdf.ImagePlacement imagePlacement in imagePlacementAbsorber.ImagePlacements)
    {
        // Konvertieren Sie ein Bild von der PDF-Seite in den Stream
        MemoryStream ms = new MemoryStream();
        imagePlacement.Save(ms, ImageFormat.Png);
        ms.Position = 0;

        // Barcode aus dem extrahierten Bild der Seite erkennen
        BarCodeReader reader = new BarCodeReader(ms);

        // Zeige Ergebnisse
        foreach (BarCodeResult result in reader.ReadBarCodes())
        {
            Console.WriteLine("Codetext found: " + result.CodeText);
            Console.WriteLine("Symbology: " + result.CodeType);
            Console.WriteLine("-------------------------------");
        }
    }
}

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 in C# liest. Wir haben auch verschiedene Ansätze und Methoden gesehen, um Bilder aus einem PDF-Dokument zu extrahieren und die eingebetteten Barcodes programmgesteuert zu decodieren. Außerdem 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 Forum an uns wenden.

Siehe auch