Читалка QR - штрихкодов v 1.1
Примеров чтения штрих-кодов из PDF много, но все они сводятся к нескольким библиотекам или exe файлам, либо дополнительной установке программного обеспечения.
Данная обработка и Native библиотека позволяют прочитать штрих-коды прямо из PDF файла, а затем скопировать нужные страницы PDF в отдельный документ PDF.
Что умеет библиотека:
- Искать QR и штрихкоды на картинке, и в PDF файле;
- Сохранять PDF файл в PNG, JPG, BMP, TGA.
- Удалять страницы из PDF
- Копировать страницы из одного PDF в другой
- Заменять страницы в PDF из другого PDF
Возвращает распознанные коды либо в XML либо в JSON формате, для этого используется флаг:
КомпонентВК.ВыводXML = Истина; XML
КомпонентВК.ВыводXML = Ложь; JSON
//в версии 1.1 выводится флаг об ошибке распознавания, а так же сообщение об ошибке
Применение:
- Чтение счетов на оплату с QR кодами.
- Распознавание штрихкодируемых документов и прикрепление их к объектам базы
- Разделка PDF файла
- Склейка 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", Штрихкоды);
УдалятьСтраницыВИсходномФайле = Ложь;
//Вызов функции изменен в версии 1.1
//ФлагБулево = КомпонентВК.КопироватьСтраницыВPDF(ПолноеИмяИсходногоФайла, ПолноеИмяФайлаПриемника,
// "1-3", УдалятьСтраницыВИсходномФайле, ТекстРезультата);
//на:
КомпонентВК.КопироватьСтраницыВPDF(ПолноеИмяИсходногоФайла, ПолноеИмяФайлаПриемника, "1-3",
ИндексВставки, УдалятьСтраницыВИсходномФайле, ТекстРезультата);
ФлагБулево = КомпонентВК.УдалитьСтраницыИзPDF(ПолноеИмяФайла, "1,3", ТекстРезультата);
//Добавлены в версии 1.1
ОттенкиСерого = Ложь;
mScale = 3;
КомпонентВК.ЗаменитьСтраницуВPDF(ПолноеИмяИсходногоФайла, ПолноеИмяФайлаПриемника, Страницы,
ИндексВставки, УдалятьСтраницыВИсходномФайле, ТекстРезультата);
КомпонентВК.СохранитьPDFВИзображение(ПолноеИмяИсходногоФайла, ПапкаДляКартинок, "1,3", mScale,
ОттенкиСерого, "JPG", ТекстРезультата);
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 картинки для теста.
PS (Библиотека неспешно дорабатывается вводится новый функционал, рассмотрю ваши предложения по внедрению дополнительного функционала)
Проверено на следующих конфигурациях и релизах:
- Бухгалтерия предприятия КОРП, редакция 3.0, релизы 3.0.181.10
- 1С:ERP Управление предприятием 2, релизы 2.5.23.64
Вступайте в нашу телеграмм-группу Инфостарт