Читалка QR - штрихкодов
Примеров чтения штрих-кодов из PDF много, но все они сводятся к нескольким библиотекам или exe файлам, либо дополнительной установке программного обеспечения.
Данная обработка и Native библиотека позволяют прочитать штрих-коды прямо из PDF файла, а затем скопировать нужные страницы PDF в отдельный документ PDF.
Возвращает распознанные коды либо в XML либо в JSON формате, для этого используется флаг:
КомпонентВК.ВыводXML = Истина; XML
КомпонентВК.ВыводXML = Ложь; JSON
Применение:
- Чтение счетов на оплату с QR кодами.
- Распознавание штрихкодируемых документов и прикрепление их к объектам базы
- Разделка PDF файла
- Склейка PDF файла
Как работает данная обработка:
1. Подключение внешней библиотеки:
ИмяКомпоненты ="ReaderBarcode";
ПолныйПуть = "ReaderBarcode.dll";
Рез = ПодключитьВнешнююКомпоненту(ПолныйПуть, ИмяКомпоненты, ТипВнешнейКомпоненты.Native);
ПрогИД = "AddIn."+ИмяКомпоненты+".ReaderBarcode";
КомпонентВК = Новый(ПрогИД);
2. Выполнение функций библиотеки:
//Вывод в виде XML (структурированной для таблицы значений)
КомпонентВК.ВыводXML = Истина;
//Задаем переменную для получения результата
Штрихкоды = "";
//Получаем количество страниц в PDF
КоличествоСтраниц = КомпонентВК.ПолучитьКоличествоСтраницPDF(ПолноеИмяФайла);
//Получить штрихкоды с заданной страницы
Результат = КомпонентВК.ПолучитьШтрихкодСоСтраницыPDF(ПолноеИмяФайла, КоличествоСтраниц,
"EAN13,Code128,QRCode", 3, Штрихкоды);
//Получить штрихкоды со всех страниц
Результат = КомпонентВК.ПолучитьШтрихкодыИзPDF(ПолноеИмяФайла, "", 3, Штрихкоды);
// Формируем таблицу значений из XML
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(Штрихкоды);
ТаблицаЗначенийШтрихкодов = СериализаторXDTO.ПрочитатьXML(ЧтениеXML));
3. Функции библиотеки
КоличествоСтраниц = КомпонентВК.ПолучитьКоличествоСтраницPDF(ПолноеИмяФайла);
ФлагБулево = КомпонентВК.ПолучитьШтрихкодСоСтраницыPDF(ПолноеИмяФайла, КоличествоСтраниц,
"Code128", 3, Штрихкоды);
ФлагБулево = КомпонентВК.ПолучитьШтрихкодыИзPDF(ПолноеИмяФайла, "Code128,QRCode", 3, Штрихкоды);
ФлагБулево = КомпонентВК.ПолучитьШтрихкодИзКартинки(ПолноеИмяФайла, "Code128,QRCode", Штрихкоды);
УдалятьСтраницыВИсходномФайле = Ложь;
ФлагБулево = КомпонентВК.КопироватьСтраницыВPDF(ПолноеИмяИсходногоФайла, ПолноеИмяФайлаПриемника,
"1-3", УдалятьСтраницыВИсходномФайле, ТекстРезультата);
ФлагБулево = КомпонентВК.УдалитьСтраницыИзPDF(ПолноеИмяФайла, "1,3", ТекстРезультата);
4. Какие коды определяет библиотека
Определение кодов напрямую зависит от качества изображения
Aztec ///< Aztec
Codabar ///< Codabar
Code39 ///< Code39
Code93 ///< Code93
Code128 ///< Code128
DataBar ///< GS1 DataBar, formerly known as RSS 14
DataBarExpanded///< GS1 DataBar Expanded, formerly known as RSS EXPANDED
DataMatrix ///< DataMatrix
EAN8 ///< EAN-8
EAN13 ///< EAN-13
ITF ///< ITF (Interleaved Two of Five)
MaxiCode ///< MaxiCode
PDF417 ///< PDF417
QRCode ///< QR Code
UPCA ///< UPC-A
UPCE ///< UPC-E
MicroQRCode ///< Micro QR Code
RMQRCode ///< Rectangular Micro QR Code
DXFilmEdge ///< DX Film Edge Barcode
5. Библиотека работает на следующих компонентах
PDFIUM - https://pdfium.googlesource.com/
Zxing - https://zxing.org/
stb_image - https://cppget.org/
AddInNative - https://its.1c.ru/db/metod8dev/content/3221/hdoc
возможно ошибся со страницами
В архиве находится обработка демонстрирующая возможности (с макетом библиотеки), отдельно библиотека, PDF файл для теста, PNG картинки для теста.
Проверено на следующих конфигурациях и релизах:
- Бухгалтерия предприятия КОРП, редакция 3.0, релизы 3.0.181.10
- 1С:ERP Управление предприятием 2, релизы 2.5.23.64
Вступайте в нашу телеграмм-группу Инфостарт