Формирование QR кода, а также дополнительно к нему 141 тип штрих кодов бесплатно!


Формирование QR кода или любого другого из 141 типов штрих кодов с помощью утилиты, устанавливаемой на машину пользователя.

Качаем утилиту https://github.com/downloads/zint/zint/Setup_Zint_2.4.2.0.exe, а также мануал к ней по желанию https://github.com/downloads/zint/zint/zint_manual_242.pdf.

Допустим по умолчанию утилита установилась по адресу "C:\Program Files (x86)\Zint\".

Для получения картинки QR кода используем функцию ПолучитьКартинкуQRКода, где параметры:

КодируемыйОбъект имеет тип "Строка" (кодируемая фраза), КаталогГенератораШК = "C:\Program Files (x86)\Zint\" (место установки утилиты). Функция возвращает объект Картинка или тип Неопределено. Далее для печати в табличном документе картинки, можно использовать функцию ВывестиQRКодВОбластьМакета, где параметры ОбластьМакета - область макета табличного документа, КартинкаQRКода это картинка возвращенная функцией ПолучитьКартинкуQRКода.

 Функция ПолучитьКартинкуQRКода(КодируемыйОбъект,КаталогГенератораШК) Экспорт
    Перем КартинкаQRКод;
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла("png");
    Попытка
        КомандаСистемы("zint -b 58 -o " + ИмяВременногоФайла + " -d '" + КодируемыйОбъект + "'",КаталогГенератораШК);
    Исключение
        Сообщить(ОписаниеОшибки());
           Возврат Неопределено;
    КонецПопытки;
    Попытка
        КартинкаQRКод = Новый Картинка(ИмяВременногоФайла);
    Исключение
        Сообщить(ОписаниеОшибки());
        Попытка
            УдалитьФайлы(ИмяВременногоФайла);
        Исключение
            Сообщить(ОписаниеОшибки());
        КонецПопытки;
        Возврат Неопределено;
    КонецПопытки;
    Попытка
        УдалитьФайлы(ИмяВременногоФайла);
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
    Возврат КартинкаQRКод;
КонецФункции

 

Функция ВывестиQRКодВОбластьМакета(ОбластьМакета,КартинкаQRКода) Экспорт
    Для каждого Рисунок Из ОбластьМакета.Рисунки Цикл
        Если Рисунок.Имя = "ШтрихКод" Тогда
            Если ЗначениеЗаполнено(КартинкаQRКода) Тогда
                Рисунок.Картинка = КартинкаQRКода;
            КонецЕсли;    
        КонецЕсли;
    КонецЦикла;
КонецФункции

Если нужно закодировать не QR кодом, а каким нибудь другим эта утилита умеет кодировать 142 типа кода. Подробности в мануале https://github.com/downloads/zint/zint/zint_manual_242.pdf. Функция по получению штрих кода любого типа ниже.

Параметр ТипШтрихКода может имеет либо Строковой тип либо числовой. Главное чтобы этот параметр был от 1 до 142.

   Функция ПолучитьКартинкуШККода(КодируемыйОбъект,КаталогГенератораШК,ТипШтрихКода) Экспорт
    Перем КартинкаQRКод;
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла("png");
    Попытка
        КомандаСистемы("zint -b " + ТипШтрихКода +" -o " + ИмяВременногоФайла + " -d '" + КодируемыйОбъект + "'",КаталогГенератораШК);
    Исключение
        Сообщить(ОписаниеОшибки());
           Возврат Неопределено;
    КонецПопытки;
    Попытка
        КартинкаQRКод = Новый Картинка(ИмяВременногоФайла);
    Исключение
        Сообщить(ОписаниеОшибки());
        Попытка
            УдалитьФайлы(ИмяВременногоФайла);
        Исключение
            Сообщить(ОписаниеОшибки());
        КонецПопытки;
        Возврат Неопределено;
    КонецПопытки;
    Попытка
        УдалитьФайлы(ИмяВременногоФайла);
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
    Возврат КартинкаQRКод;
КонецФункции

Благодарю за ссылку на чудо утилиту http://avprog.ru/profile/15144/


Файлы обработки:

-