Czytaj kod kreskowy z PDF w C#

Możemy generować i dodawać kody kreskowe do dokumentów PDF w sposób opisany w moim poprzednim poście. W niektórych przypadkach może być konieczne programowe wykrywanie i odczytywanie kodów kreskowych osadzonych w dokumentach PDF. Pomaga dekodować osadzone informacje w postaci kodów kreskowych i kodów QR z dokumentów PDF, takich jak faktury, paragony czy raporty. W tym artykule dowiemy się, jak odczytać kod kreskowy z dokumentu PDF za pomocą języka C#.

Artykuł obejmie następujące tematy:

  1. C# API do odczytu kodu kreskowego z pliku PDF
  2. Odczytaj kod kreskowy z pliku PDF
  3. Konwertuj PDF na obraz i czytaj kody kreskowe
  4. Odczyt kodów kreskowych z PDF za pomocą PngDevice
  5. Wyodrębnij i odczytaj kod kreskowy z pliku PDF
  6. Znajdź i przeczytaj obraz kodu kreskowego z pliku PDF

C# API do odczytu kodu kreskowego z pliku PDF

Będziemy postępować zgodnie z dwuetapową procedurą odczytu kodów kreskowych z dokumentów PDF. Najpierw użyjemy API Aspose.PDF for .NET do załadowania dokumentu PDF, a następnie zrenderujemy jego strony do obrazów rastrowych. Następnie odczytamy kod kreskowy z wyrenderowanych obrazów za pomocą API Aspose.BarCode for .NET.

Proszę pobrać bibliotekę DLL interfejsu API lub zainstalować ją za pomocą NuGet.

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

Czytaj kod kreskowy z pliku PDF za pomocą C#

Klasa Document interfejsu API Aspose.PDF reprezentuje dokument PDF. Funkcja ConvertToPNGMemoryStream() interfejsu API renderuje stronę PDF do strumienia pamięci PNG. Klasa BarCodeReader API Aspose.BarCode umożliwia wykonywanie operacji ReadBarCodes w celu wykrycia kodów kreskowych. 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 je do strumienia pamięci.
  3. Następnie utwórz instancję klasy BarCodeReader z obiektem stream.
  4. Następnie wywołaj metodę ReadBarCodes(), aby uzyskać obiekt 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 C#.

// Ten przykład kodu demonstruje, jak odczytać kod kreskowy z dokumentu PDF przy użyciu języka C#.
// Ścieżka do dokumentu
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// Załaduj dokument PDF
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

// Kontynuuj wszystkie strony PDF, zaczynając od strony 1
for (int i = 1; i <= pdfDoc.Pages.Count; ++i)
{
    // Renderuj stronę PDF do strumienia
    MemoryStream ms = pdfDoc.Pages[i].ConvertToPNGMemoryStream();
    ms.Position = 0;

    // Rozpoznaj kody kreskowe z renderowanego obrazu strony
    BarCodeReader reader = new BarCodeReader(ms);
    
    // Pokaż wyniki
    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
-------------------------------

Proszę pobierz wejściowy dokument PDF z kodami kreskowymi użyty w tym poście na blogu.

Konwertuj PDF na obraz i czytaj kody kreskowe za pomocą C#

Kody kreskowe z dokumentu PDF możemy odczytać, konwertując strony PDF na obrazy za pomocą klasy PdfConverter. Pozwala przekonwertować każdą stronę pliku PDF na obraz, a 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, takie jak Optymalizacja kodu kreskowego.
  4. Następnie ustaw rozdzielczość obrazu.
  5. Następnie określ StartPage i EndPage, aby renderować zakres stron do obrazów.
  6. Następnie wywołaj metodę DoConvert() w celu renderowania wybranych stron w obrazy.
  7. Następnie zapisz obraz do strumieniowego przesyłania w pętli.
  8. Następnie utwórz instancję klasy BarCodeReader z obiektem stream.
  9. Następnie wywołaj metodę ReadBarCodes(), aby uzyskać obiekt 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 przy użyciu języka C#.

// Poniższy przykład kodu pokazuje, jak konwertować strony PDF na obrazy za pomocą konwertera PDF i odczytywać kody kreskowe przy użyciu języka C#.
// Ścieżka do dokumentu
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// Załaduj dokument PDF
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

// Zainicjuj konwerter PDF
Aspose.Pdf.Facades.PdfConverter pdfConverter = new Aspose.Pdf.Facades.PdfConverter(pdfDoc);

// Ustaw optymalizację kodu kreskowego
pdfConverter.RenderingOptions.BarcodeOptimization = true;

// Ustaw rozdzielczość strony
// 300 dpi to standardowa rozdzielczość
pdfConverter.Resolution = new Aspose.Pdf.Devices.Resolution(300);

// Ustaw renderowanie wszystkich stron na obrazy
pdfConverter.StartPage = 1; //starts from page 1
pdfConverter.EndPage = pdfConverter.Document.Pages.Count;

// Renderuj wybrane strony do obrazów
pdfConverter.DoConvert();
while (pdfConverter.HasNextImage())
{
    // Renderuj bieżącą stronę do obrazu strumienia pamięci
    MemoryStream ms = new MemoryStream();
    pdfConverter.GetNextImage(ms, ImageFormat.Png);
    ms.Position = 0;

    // Rozpoznaj kody kreskowe z renderowanego obrazu strony
    BarCodeReader reader = new BarCodeReader(ms);
    
    // Pokaż wyniki
    foreach (BarCodeResult result in reader.ReadBarCodes())
    {
        Console.WriteLine("Codetext found: " + result.CodeText);
        Console.WriteLine("Symbology: " + result.CodeType);
        Console.WriteLine("-------------------------------");
    }
}

Czytaj kody kreskowe z PDF za pomocą PngDevice w C#

Oto kolejna metoda podobna do poprzedniej. Jedyną różnicą jest to, że w tej metodzie przekonwertujemy strony dokumentu PDF na obrazy za pomocą klasy PngDevice API. Umożliwia konwersję stron dokumentu PDF na obrazy PNG.

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ę Process() w celu wyrenderowania do strumienia.
  4. Następnie utwórz instancję klasy BarCodeReader z obiektem stream.
  5. Następnie wywołaj metodę ReadBarCodes(), aby uzyskać obiekt BarCodeResult.
  6. Na koniec pokaż informacje o kodzie kreskowym.

Poniższy przykład kodu pokazuje, jak konwertować strony PDF na obrazy PNG i odczytywać kody kreskowe przy użyciu języka C#.

// Poniższy przykład kodu pokazuje, jak konwertować strony PDF na obrazy za pomocą PngDevice i odczytywać kody kreskowe przy użyciu języka C#.
// Ścieżka do dokumentu
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// Załaduj dokument PDF
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

// Utwórz urządzenie PNG o standardowej rozdzielczości 300 dpi
Aspose.Pdf.Devices.PngDevice pngDevice = new Aspose.Pdf.Devices.PngDevice(new Aspose.Pdf.Devices.Resolution(300));

// Kontynuuj wszystkie strony PDF, zaczynając od strony 1
for (int i = 1; i <= pdfDoc.Pages.Count; ++i)
{
    // Renderuj stronę PDF do strumienia
    MemoryStream ms = new MemoryStream();
    pngDevice.Process(pdfDoc.Pages[i], ms);
    ms.Position = 0;

    // Rozpoznaj kod kreskowy z renderowanego obrazu strony
    BarCodeReader reader = new BarCodeReader(ms);

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

Wyodrębnij i odczytaj kod kreskowy z pliku PDF za pomocą C#

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 zwiąż wejściowy dokument PDF za pomocą metody BindPdf().
  3. Następnie ustaw zakres stron do ekstrakcji obrazu.
  4. Następnie wywołaj metodę ExtractImage(), aby wyodrębnić obrazy.
  5. Następnie zapisz obraz, aby przesyłać strumieniowo w pętli.
  6. Następnie utwórz instancję klasy BarCodeReader z obiektem stream.
  7. Następnie wywołaj metodę ReadBarCodes(), aby uzyskać obiekt 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 C#.

// Poniższy przykład kodu pokazuje, jak konwertować strony PDF na obrazy za pomocą PdfExtractor i odczytywać kody kreskowe za pomocą języka C#.
// Ścieżka do dokumentu
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// Zwiąż dokument PDF
Aspose.Pdf.Facades.PdfExtractor pdfExtractor = new Aspose.Pdf.Facades.PdfExtractor();
pdfExtractor.BindPdf(file);

// Ustaw zakres stron do ekstrakcji obrazu
pdfExtractor.StartPage = 1;
pdfExtractor.EndPage = 3;

// Wyodrębnij obrazy
pdfExtractor.ExtractImage();

// Zapisuj obrazy do strumieniowego przesyłania w pętli
while (pdfExtractor.HasNextImage())
{
  // Zapisz obraz do strumienia
  MemoryStream imageStream = new MemoryStream();
  pdfExtractor.GetNextImage(imageStream);
  imageStream.Position = 0;

  // Rozpoznaj kody kreskowe z powyższego strumienia obrazów
  BarCodeReader reader = new BarCodeReader(imageStream);
  foreach (BarCodeResult result in reader.ReadBarCodes())
  {
      Console.WriteLine("Codetext found: " + result.CodeText);
      Console.WriteLine("Symbology: " + result.CodeType);
      Console.WriteLine("-------------------------------");
  }
}

Znajdź i odczytaj obrazy kodów kreskowych z PDF za pomocą C#

Możemy również wyszukiwać i wyodrębniać obrazy kodów kreskowych z dokumentów PDF za pomocą klasy ImagePlacementAbsorber. Reprezentuje obiekt pochłaniający obiektów umieszczania obrazu. Wykonuje wyszukiwanie zastosowań obrazów i zapewnia dostęp do wyników wyszukiwania za pośrednictwem kolekcji ImagePlacements. Ta metoda pomaga rozpoznawać kody kreskowe z oryginalną rozdzielczością. 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(), aby uzyskać obiekt 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 C#.

// 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
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

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

// Przetwórz wszystkie strony PDF w dokumencie, zaczynając od strony 1
for (int i = 1; i <= pdfDoc.Pages.Count; ++i)
{
    // Odwiedź stronę, aby utworzyć ekstraktor obrazu
    imagePlacementAbsorber.Visit(pdfDoc.Pages[i]);

    // Wyodrębnij wszystkie obrazy ze strony PDF
    foreach (Aspose.Pdf.ImagePlacement imagePlacement in imagePlacementAbsorber.ImagePlacements)
    {
        // Konwertuj obraz ze strony PDF na strumień
        MemoryStream ms = new MemoryStream();
        imagePlacement.Save(ms, ImageFormat.Png);
        ms.Position = 0;

        // Rozpoznaj kod kreskowy z wyodrębnionego obrazu strony
        BarCodeReader reader = new BarCodeReader(ms);

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

Uzyskaj bezpłatną licencję

Możesz uzyskać bezpłatną tymczasową licencję, aby wypróbować biblioteki bez ograniczeń ewaluacyjnych.

Wniosek

W tym artykule nauczyliśmy się odczytywać kody kreskowe z dokumentów PDF w języku C#. Widzieliśmy również różne podejścia i metody do wyodrębniania obrazów z dokumentu PDF i programowego dekodowania osadzonych kodów kreskowych. Poza tym 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 forum.

Zobacz też