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:
- C# API do odczytu kodu kreskowego z pliku PDF
- Odczytaj kod kreskowy z pliku PDF
- Konwertuj PDF na obraz i czytaj kody kreskowe
- Odczyt kodów kreskowych z PDF za pomocą PngDevice
- Wyodrębnij i odczytaj kod kreskowy z pliku PDF
- 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:
- Najpierw załaduj dokument PDF za pomocą klasy Document.
- Następnie przejrzyj wszystkie strony i wyrenderuj je do strumienia pamięci.
- Następnie utwórz instancję klasy BarCodeReader z obiektem stream.
- Następnie wywołaj metodę ReadBarCodes(), aby uzyskać obiekt 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 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:
- Najpierw załaduj dokument PDF za pomocą klasy Document.
- Następnie utwórz instancję klasy PdfConverter.
- Opcjonalnie ustaw opcje renderowania, takie jak Optymalizacja kodu kreskowego.
- Następnie ustaw rozdzielczość obrazu.
- Następnie określ StartPage i EndPage, aby renderować zakres stron do obrazów.
- Następnie wywołaj metodę DoConvert() w celu renderowania wybranych stron w obrazy.
- Następnie zapisz obraz do strumieniowego przesyłania w pętli.
- Następnie utwórz instancję klasy BarCodeReader z obiektem stream.
- Następnie wywołaj metodę ReadBarCodes(), aby uzyskać obiekt BarCodeResult.
- 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:
- 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ę Process() w celu wyrenderowania do strumienia.
- Następnie utwórz instancję klasy BarCodeReader z obiektem stream.
- Następnie wywołaj metodę ReadBarCodes(), aby uzyskać obiekt BarCodeResult.
- 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:
- Najpierw utwórz instancję klasy PdfExtractor.
- Następnie zwiąż wejściowy dokument PDF za pomocą metody BindPdf().
- Następnie ustaw zakres stron do ekstrakcji obrazu.
- Następnie wywołaj metodę ExtractImage(), aby wyodrębnić obrazy.
- Następnie zapisz obraz, aby przesyłać strumieniowo w pętli.
- Następnie utwórz instancję klasy BarCodeReader z obiektem stream.
- Następnie wywołaj metodę ReadBarCodes(), aby uzyskać obiekt 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 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:
- 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(), aby uzyskać obiekt 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 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.