При печати QR кодов на разных принтерах этикеток столкнулся с проблемой кодировки. Для одних принтеров для правильного формирования шрифтов требовалось отправлять данные в кодировки ANSI на других аппаратах в UTF8. QR код формировался командами :
^FO314,358^BQR,2,5
^FDMA,[QRКодЦенаКатегория]^FS
На некоторых аппаратах QR код формировался верно, а на других русские буквы в QR коде превращались в иероглифы. Использование смены наборов символов ^CI28 или ^CI33 , загрузка шрифтов и печать командами :
^A@R,130,40,E:ARIALB.TTF
^FO430,24^FD[НоменклатураНаименование]^FS
решало вопросы только конкретного принтера. Пробовал печатать на Zebra LP2824, GK410, 420, Атол XP323W. Часть принтеров беспроводных, часть "расшаренных" в локальной сети. Печать макетов идет и с компьютеров(Windows) и терминалов сбора данных (тоже разных модификаций) (Android).
В общем решил я сделать "ход конем" - а буду я формировать QR код как картинку и печатать его на этикетках как графику.
Скоро сказка сказывается, да не скоро дело идет.
Изучение команды ^GF (Формат ^GFa,b,c,d,data) привело к очень сложной проблеме : формирование поля "data" по правилам языка ZPL.
1. Как "подготовить" данные для поля "data" ?
2. Смогу ли я средствами платформы 1С получить требуемый формат ASCII hexadecimal data: 00 to FF
3. Полученный ZPL-код будет иметь большой размер. Нужно разобраться как его сжать, иначе отправка на принтер будет занимать более долгое время.
Недельный сбор информации, изучение различных примеров на C++ и Java принесли плоды. И спустя еще неделю было готово сие творение на "чистом" языке 1С, которое я вам предлагаю для ознакомления.
Для новичков предлагаю демо-код этикетки :
^XA
~SD08
^PR2
^CI28
^FO296,8^GB280,504,3^FS
^FO296,8^GB118,320,2^FS
^A@R,130,40,E:ARIALB.TTF
^FO430,24^FD[НоменклатураНаименование]^FS
^A0R,97,110
^FO294,36^FD[НоменклатураКод]^FS
^FO314,358^BQR,2,5
^FDMA,[QRКодЦена любое значение]^FS
^PQ[Количество этикеток]
^XZ
Описание языка ZPL :
https://www.zebra.com/content/dam/zebra/manuals/printers/common/programming/zpl-zbi2-pm-en.pdf
В макете обработки находится компонента печати штрихкодов из БСП, не пугайтесь сильно. Она нужна для формирования картинки QR кода.
Тестировал на платформе 1С:Предприятие 8.3 (8.3.18.1289).