![Чтение штрих-кода из PDF на С#](images/read-barcode-from-pdf-in-csharp.jpg#center)
Мы можем генерировать и добавлять штрих-коды в документы PDF, как описано в моем предыдущем посте. В некоторых случаях нам может потребоваться программно обнаруживать и считывать штрих-коды, встроенные в PDF-документы. Это помогает декодировать встроенную информацию в виде штрих-кодов и QR-кодов из документов PDF, таких как счета, квитанции или отчеты. В этой статье мы узнаем, как читать штрих-код из PDF-документа с помощью C#.
Статья должна охватывать следующие темы:
- API C# для чтения штрих-кода из PDF
- Чтение штрих-кода из PDF
- Преобразование PDF в изображение и чтение штрих-кодов
- Чтение штрих-кодов из PDF с помощью PngDevice
- Извлечь и прочитать штрих-код из PDF
- Найти и прочитать изображение штрих-кода из PDF
С# API для чтения штрих-кода из PDF
Мы будем следовать двухэтапной процедуре чтения штрих-кодов из PDF-документов. Во-первых, мы будем использовать API Aspose.PDF для .NET для загрузки PDF-документа, затем мы будем отображать его страницы в растровые изображения. После этого мы будем считывать штрих-код с визуализированных изображений с помощью API Aspose.BarCode for .NET.
Пожалуйста, загрузите DLL API или установите его с помощью NuGet.
PM> Install-Package Aspose.BarCode
PM> Install-Package Aspose.PDF
Чтение штрих-кода из PDF с помощью С#
Класс Document API Aspose.PDF представляет PDF-документ. Функция ConvertToPNGMemoryStream() API преобразует страницу PDF в поток памяти PNG. Класс BarCodeReader API Aspose.BarCode позволяет нам выполнять операции ReadBarCodes для обнаружения штрих-кодов. Класс BarCodeResult хранит обнаруженную информацию о штрих-коде, такую как тип штрих-кода, текст кода, регион и другие параметры.
Мы можем прочитать изображения штрих-кода, встроенные в любую из страниц PDF-документа, выполнив следующие шаги:
- Во-первых, загрузите документ PDF, используя класс Document.
- Затем прокрутите все страницы и отобразите их в потоке памяти.
- Затем создайте экземпляр класса BarCodeReader с объектом потока.
- После этого вызовите метод ReadBarCodes(), чтобы получить объект BarCodeResult.
- Наконец, покажите информацию о штрих-коде.
В следующем примере кода показано, как считать штрих-код из документа PDF с помощью C#.
// В этом примере кода показано, как считывать штрих-код из документа PDF с помощью C#.
// Путь к документу
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";
// Загрузите PDF-документ
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);
// Перейти ко всем страницам PDF, начиная со страницы 1
for (int i = 1; i <= pdfDoc.Pages.Count; ++i)
{
// Рендеринг страницы PDF в поток
MemoryStream ms = pdfDoc.Pages[i].ConvertToPNGMemoryStream();
ms.Position = 0;
// Распознавать штрих-коды из визуализированного изображения страницы
BarCodeReader reader = new BarCodeReader(ms);
// Показать результаты
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
-------------------------------
Пожалуйста, загрузите исходный PDF-документ со штрих-кодами, использованный в этом сообщении блога.
Преобразование PDF в изображение и чтение штрих-кодов с помощью C#
Мы можем считывать штрих-коды из PDF-документа, конвертируя PDF-страницы в изображения с помощью класса PdfConverter. Это позволяет преобразовать каждую страницу PDF-файла в изображение, а затем мы будем считывать информацию о штрих-коде из преобразованного изображения.
Мы можем считывать штрих-коды с преобразованных страниц PDF, выполнив следующие действия:
- Во-первых, загрузите документ PDF, используя класс Document.
- Затем создайте экземпляр класса PdfConverter.
- При необходимости установите параметры рендеринга, такие как BarcodeOptimization.
- Затем установите разрешение изображения.
- Затем укажите StartPage и EndPage, чтобы преобразовать диапазон страниц в изображения.
- Затем вызовите метод DoConvert(), чтобы преобразовать выбранные страницы в изображения.
- Затем сохраните изображение для потоковой передачи в цикле.
- Затем создайте экземпляр класса BarCodeReader с объектом потока.
- После этого вызовите метод ReadBarCodes(), чтобы получить объект BarCodeResult.
- Наконец, покажите информацию о штрих-коде.
В следующем примере кода показано, как преобразовывать страницы PDF в изображения и считывать штрих-коды с помощью C#.
// В следующем примере кода показано, как преобразовать PDF-страницы в изображения с помощью PDF Converter и считывать штрих-коды с помощью C#.
// Путь к документу
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";
// Загрузите PDF-документ
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);
// Инициализировать PdfConvertor
Aspose.Pdf.Facades.PdfConverter pdfConverter = new Aspose.Pdf.Facades.PdfConverter(pdfDoc);
// Установить оптимизацию штрих-кода
pdfConverter.RenderingOptions.BarcodeOptimization = true;
// Установить разрешение страницы
// 300 dpi — стандартное разрешение
pdfConverter.Resolution = new Aspose.Pdf.Devices.Resolution(300);
// Установите все страницы для отображения в изображения
pdfConverter.StartPage = 1; //starts from page 1
pdfConverter.EndPage = pdfConverter.Document.Pages.Count;
// Преобразование выбранных страниц в изображения
pdfConverter.DoConvert();
while (pdfConverter.HasNextImage())
{
// Отобразить текущую страницу в изображение потока памяти
MemoryStream ms = new MemoryStream();
pdfConverter.GetNextImage(ms, ImageFormat.Png);
ms.Position = 0;
// Распознавать штрих-коды из визуализированного изображения страницы
BarCodeReader reader = new BarCodeReader(ms);
// Показать результаты
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.WriteLine("Codetext found: " + result.CodeText);
Console.WriteLine("Symbology: " + result.CodeType);
Console.WriteLine("-------------------------------");
}
}
Чтение штрих-кодов из PDF с помощью PngDevice в C#
Вот еще один способ, похожий на предыдущий. Единственное отличие состоит в том, что в этом методе мы будем преобразовывать страницы PDF-документа в изображения с помощью класса PngDevice API. Он позволяет преобразовывать страницы документа PDF в изображения PNG.
Мы можем считывать штрих-коды с преобразованных страниц PDF в виде изображений PNG, выполнив следующие действия:
- Во-первых, загрузите документ PDF, используя класс Document.
- Затем создайте экземпляр класса PngDevice.
- Затем прокрутите все страницы и вызовите метод Process() для рендеринга в поток.
- Затем создайте экземпляр класса BarCodeReader с объектом потока.
- После этого вызовите метод ReadBarCodes(), чтобы получить объект BarCodeResult.
- Наконец, покажите информацию о штрих-коде.
В следующем примере кода показано, как преобразовывать страницы PDF в изображения PNG и считывать штрих-коды с помощью C#.
// В следующем примере кода показано, как преобразовать страницы PDF в изображения с помощью PngDevice и считывать штрих-коды с помощью C#.
// Путь к документу
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";
// Загрузите PDF-документ
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);
// Создайте устройство PNG со стандартным разрешением 300 dpi
Aspose.Pdf.Devices.PngDevice pngDevice = new Aspose.Pdf.Devices.PngDevice(new Aspose.Pdf.Devices.Resolution(300));
// Перейти ко всем страницам PDF, начиная со страницы 1
for (int i = 1; i <= pdfDoc.Pages.Count; ++i)
{
// Рендеринг страницы PDF в поток
MemoryStream ms = new MemoryStream();
pngDevice.Process(pdfDoc.Pages[i], ms);
ms.Position = 0;
// Распознать штрих-код из визуализированного изображения страницы
BarCodeReader reader = new BarCodeReader(ms);
// Показать результаты
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.WriteLine("Codetext found: " + result.CodeText);
Console.WriteLine("Symbology: " + result.CodeType);
Console.WriteLine("-------------------------------");
}
}
Извлечение и чтение штрих-кода из PDF с помощью C#
Мы также можем распознавать изображения штрих-кода, встроенные в страницы PDF, с помощью класса PdfExtractor. Это позволяет извлекать изображения из PDF, а затем мы читаем информацию о штрих-коде из извлеченного изображения.
Мы можем прочитать штрих-коды из извлеченных изображений, выполнив следующие шаги:
- Во-первых, создайте экземпляр класса PdfExtractor.
- Затем свяжите входной PDF-документ с помощью метода BindPdf().
- Затем установите диапазон страниц для извлечения изображения.
- Затем вызовите метод ExtractImage() для извлечения изображений.
- Затем сохраните изображение для потоковой передачи в цикле.
- Затем создайте экземпляр класса BarCodeReader с объектом потока.
- После этого вызовите метод ReadBarCodes(), чтобы получить объект BarCodeResult.
- Наконец, покажите информацию о штрих-коде.
В следующем примере кода показано, как извлечь и прочитать изображение штрих-кода из документа PDF с помощью C#.
// В следующем примере кода показано, как преобразовать страницы PDF в изображения с помощью PdfExtractor и прочитать штрих-коды с помощью C#.
// Путь к документу
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";
// Привязать PDF-документ
Aspose.Pdf.Facades.PdfExtractor pdfExtractor = new Aspose.Pdf.Facades.PdfExtractor();
pdfExtractor.BindPdf(file);
// Установить диапазон страниц для извлечения изображения
pdfExtractor.StartPage = 1;
pdfExtractor.EndPage = 3;
// Извлеките изображения
pdfExtractor.ExtractImage();
// Сохраняйте изображения для потоковой передачи в цикле
while (pdfExtractor.HasNextImage())
{
// Сохранить изображение в поток
MemoryStream imageStream = new MemoryStream();
pdfExtractor.GetNextImage(imageStream);
imageStream.Position = 0;
// Распознайте штрих-коды из потока изображений выше
BarCodeReader reader = new BarCodeReader(imageStream);
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.WriteLine("Codetext found: " + result.CodeText);
Console.WriteLine("Symbology: " + result.CodeType);
Console.WriteLine("-------------------------------");
}
}
Поиск и чтение изображений штрих-кода из PDF с помощью C#
Мы также можем находить и извлекать изображения штрих-кода из PDF-документов с помощью класса ImagePlacementAbsorber. Он представляет собой объект-поглотитель объектов размещения изображения. Он выполняет поиск использования изображений и предоставляет доступ к результатам поиска через коллекцию ImagePlacements. Этот метод помогает распознавать штрих-коды с исходным разрешением. Он может неправильно распознавать векторные форматы.
Мы можем найти и прочитать штрих-коды из документов PDF, выполнив следующие действия:
- Во-первых, загрузите документ PDF, используя класс Document.
- Затем создайте экземпляр класса ImagePlacementAbsorber.
- Затем вызовите метод Visit() для каждой страницы в цикле.
- Затем прокрутите все изображения, найденные в коллекции ImagePlacements.
- Затем сохраните изображение в поток памяти.
- Затем создайте экземпляр класса BarCodeReader с объектом потока.
- После этого вызовите метод ReadBarCodes(), чтобы получить объект BarCodeResult.
- Наконец, покажите информацию о штрих-коде.
В следующем примере кода показано, как найти и прочитать изображения штрих-кода из PDF-файла с помощью C#.
// В этом примере кода показано, как считывать штрих-код из документа PDF с помощью ImagePlacementAbsorber.
// Путь к документу
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";
// Загрузите PDF-документ
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);
// Инициализировать ImagePlacementAbsorber
Aspose.Pdf.ImagePlacementAbsorber imagePlacementAbsorber = new Aspose.Pdf.ImagePlacementAbsorber();
// Обработать все страницы PDF в документе, начиная со страницы 1
for (int i = 1; i <= pdfDoc.Pages.Count; ++i)
{
// Посетите страницу создания экстрактора изображений
imagePlacementAbsorber.Visit(pdfDoc.Pages[i]);
// Извлечь все изображения со страницы PDF
foreach (Aspose.Pdf.ImagePlacement imagePlacement in imagePlacementAbsorber.ImagePlacements)
{
// Преобразование изображения со страницы PDF в поток
MemoryStream ms = new MemoryStream();
imagePlacement.Save(ms, ImageFormat.Png);
ms.Position = 0;
// Распознать штрих-код из извлеченного изображения страницы
BarCodeReader reader = new BarCodeReader(ms);
// Показать результаты
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.WriteLine("Codetext found: " + result.CodeText);
Console.WriteLine("Symbology: " + result.CodeType);
Console.WriteLine("-------------------------------");
}
}
}
Получить бесплатную лицензию
Вы можете получить бесплатную временную лицензию, чтобы опробовать библиотеки без ограничений на пробную версию.
Вывод
В этой статье мы узнали, как читать штрих-коды из PDF-документов на C#. Мы также видели различные подходы и методы для извлечения изображений из PDF-документа и программного декодирования встроенных штрих-кодов. Кроме того, вы можете узнать больше об API, используя документацию для Aspose.BarCode и документацию для Aspose.PDF. В случае возникновения каких-либо неясностей, пожалуйста, свяжитесь с нами на нашем форуме.