Ми можемо створювати та додавати штрих-коди до PDF документів, як описано в моїй попередній публікації. У деяких випадках нам може знадобитися виявити та зчитати штрих-коди, вбудовані в PDF-документи, програмним шляхом. Це допомагає декодувати вбудовану інформацію у вигляді штрих-кодів і QR-кодів з PDF-документів, таких як рахунки-фактури, квитанції або звіти. У цій статті ми навчимося читати штрих-код із документа PDF за допомогою C#.
Стаття повинна охоплювати такі теми:
- API C# для читання штрих-коду з PDF
- Прочитати штрих-код із PDF
- Перетворення PDF на зображення та читання штрих-кодів
- Зчитування штрих-кодів із PDF за допомогою PngDevice
- Видобути та прочитати штрих-код із PDF
- Знайти та прочитати зображення штрих-коду в PDF
C# API для читання штрих-коду з PDF
Ми будемо виконувати двоетапну процедуру, щоб зчитувати штрих-коди з документів PDF. По-перше, ми будемо використовувати API Aspose.PDF for .NET для завантаження PDF-документа, а потім візуалізуємо його сторінки у растрові зображення. Після цього ми прочитаємо штрих-код із відрендерених зображень за допомогою API Aspose.BarCode for .NET.
Завантажте DLL API або встановіть його за допомогою NuGet.
PM> Install-Package Aspose.BarCode
PM> Install-Package Aspose.PDF
Читання штрих-коду з PDF за допомогою C#
Клас 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 точок на дюйм є стандартною роздільною здатністю
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 точок на дюйм
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. У разі будь-якої неясності зв’яжіться з нами на нашому форумі.