Читання штрих-коду з PDF на C#

Ми можемо створювати та додавати штрих-коди до PDF документів, як описано в моїй попередній публікації. У деяких випадках нам може знадобитися виявити та зчитати штрих-коди, вбудовані в PDF-документи, програмним шляхом. Це допомагає декодувати вбудовану інформацію у вигляді штрих-кодів і QR-кодів з PDF-документів, таких як рахунки-фактури, квитанції або звіти. У цій статті ми навчимося читати штрих-код із документа PDF за допомогою C#.

Стаття повинна охоплювати такі теми:

  1. API C# для читання штрих-коду з PDF
  2. Прочитати штрих-код із PDF
  3. Перетворення PDF на зображення та читання штрих-кодів
  4. Зчитування штрих-кодів із PDF за допомогою PngDevice
  5. Видобути та прочитати штрих-код із PDF
  6. Знайти та прочитати зображення штрих-коду в 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, виконавши наведені нижче дії.

  1. По-перше, завантажте PDF-документ за допомогою класу Document.
  2. Далі прокрутіть усі сторінки та відтворіть їх у потік пам’яті.
  3. Потім створіть екземпляр класу BarCodeReader з об’єктом потоку.
  4. Після цього викличте метод ReadBarCodes(), щоб отримати об’єкт BarCodeResult.
  5. Нарешті, покажіть інформацію про штрих-код.

У наведеному нижче прикладі коду показано, як читати штрих-код із документа 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-сторінок, виконавши наведені нижче дії.

  1. По-перше, завантажте PDF-документ за допомогою класу Document.
  2. Далі створіть екземпляр класу PdfConverter.
  3. Додатково встановіть параметри візуалізації, наприклад BarcodeOptimization.
  4. Потім встановіть роздільну здатність зображення.
  5. Далі вкажіть StartPage і EndPage, щоб відобразити діапазон сторінок у зображеннях.
  6. Потім викличте метод DoConvert(), щоб відобразити вибрані сторінки в зображення.
  7. Далі збережіть зображення для потокової передачі в циклі.
  8. Потім створіть екземпляр класу BarCodeReader з об’єктом потоку.
  9. Після цього викличте метод ReadBarCodes(), щоб отримати об’єкт BarCodeResult.
  10. Нарешті, покажіть інформацію про штрих-код.

У наведеному нижче прикладі коду показано, як перетворювати 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, виконавши наведені нижче дії.

  1. По-перше, завантажте PDF-документ за допомогою класу Document.
  2. Далі створіть екземпляр класу PngDevice.
  3. Потім перегляньте всі сторінки та викличте метод Process(), щоб відобразити в потоці.
  4. Далі створіть екземпляр класу BarCodeReader з об’єктом потоку.
  5. Після цього викличте метод ReadBarCodes(), щоб отримати об’єкт BarCodeResult.
  6. Нарешті, покажіть інформацію про штрих-код.

У наведеному нижче прикладі коду показано, як конвертувати сторінки 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-файлу, а потім ми будемо зчитувати інформацію про штрих-код із вилученого зображення.

Ми можемо зчитувати штрих-коди з витягнутих зображень, виконавши наведені нижче дії.

  1. По-перше, створіть екземпляр класу PdfExtractor.
  2. Потім зв’яжіть вхідний PDF-документ за допомогою методу BindPdf().
  3. Потім встановіть діапазон сторінок для вилучення зображення.
  4. Потім викличте метод ExtractImage(), щоб витягти зображення.
  5. Потім збережіть зображення для потокової передачі в циклі.
  6. Далі створіть екземпляр класу BarCodeReader з об’єктом потоку.
  7. Після цього викличте метод ReadBarCodes(), щоб отримати об’єкт BarCodeResult.
  8. Нарешті, покажіть інформацію про штрих-код.

У наведеному нижче прикладі коду показано, як видобути та прочитати зображення штрих-коду з документа 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-документів, виконавши наведені нижче дії.

  1. По-перше, завантажте PDF-документ за допомогою класу Document.
  2. Далі створіть екземпляр класу ImagePlacementAbsorber.
  3. Потім викликайте метод Visit() для кожної сторінки в циклі.
  4. Далі перегляньте всі зображення, знайдені в колекції ImagePlacements.
  5. Потім збережіть зображення в потік пам’яті.
  6. Далі створіть екземпляр класу BarCodeReader з об’єктом потоку.
  7. Після цього викличте метод ReadBarCodes(), щоб отримати об’єкт BarCodeResult.
  8. Нарешті, покажіть інформацію про штрих-код.

У наведеному нижче прикладі коду показано, як знайти та прочитати зображення штрих-кодів із 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. У разі будь-якої неясності зв’яжіться з нами на нашому форумі.

Дивись також