Как напечатать спецсимволы на термопринтерах Godex?
Есть несколько термопринтеров Godex, на них печатаются коды для "Честного знака".
Стандарт Datamatrix кода для "Честного знака" (точнее это GS1 Datamatrix) предусматривает первый символ и разделение некоторых полей (91, 92, 93) по символу . Уже давно где-то в примерах мы нашли, что для печати в Datamatrix на EZPL нужно поставить последовательность "~1" в команду XRB (печать Datamatrix), программа GoLabel при формировании этикетки с Datamatrix кодом (если подставляешь символ GS) выводит его в EZPL в виде "", но если отправить это на принтер - то так и напечатается , то же и с
Печать ведется прямая, на языке EZPL, по сети на порт 9100. Документацию читали - пока не помогло.
Единстыенное, что нашли - при печати штрихкода Code 128 с нужно подставить в данные комады BQ - "&G", но это не работает для команды XRB (печать Datamatrix)
Вопрос - как в начало Datamatrix вставить при печати на EZPL через команду XRB ?
P.S. в большинстве случаев это не на что не влияет, так как сканер при сканировании Datamatrix удаляет как признак начала, но сохраняет как разделитель. Но есть пара случаев, когда это не проходит:
- какая то экзотическая модель кассового аппарата (мы пока не определили ее)
- программа "ЧЗ бизнес", которая четко говорит, что структура Datamatrix не соотвествует стандарту (причем обычная программа "Честный знак" нормально коды без переваривает.
в ПО по печати не предусмотрено формирование Datamatrix как картинки, код вставляется в текстовый шаблон этикетки и принтер сам его печатает., т.е. функция встроенная в принтер.
Данные принтеры умеют печатать картинку уже загруженную в память, но не на лету менять ее.
Хотя в принципе конечно можно каждый раз сначала картинку грузить, а потом отправлять шаблон этикетки, который печатает эту картинку...
В общем сначала хотелось бы штатными средствами решить, а потом уже костыли использовать.
он все же печатает, только этого нет в тех документациях, что видел я на EZPL. скорее всего тоже может печатать.
say_TT_plz, не возможно там печать через pdf.
PDF - это растр на стандартном языке PCL/PS/PDF
EZPL - это когда сам принтак формирует код под особенности конкретной игольчатой головки и он выходит максимально четкий.
Несколько раз сталкивались с таким что штрих сформированный в 1С и распечатанный на обычном принтере сканируется нормально, а та же картинка распечатанная на термо через PCL нифига не сканируется.
Ответ нашелся - когда делаешь этикетку в GoLabel II, то там в объекте Datamatrix есть галочка GS1 Datamatrix, которая и добавляет FNC1 в начало кода. При сравнении EZPL текста и нашлось различие - то самое "~1", которое мы использовали в качестве GS.
Причем выяснилось, что использовать FNC1 в качестве разделителя AI полей можно (это четко прописано в регламенте GS1), а вот GS в качестве начального символа - нельзя.
say_TT_plz, слишком сложно получится - мы получаем коды для нанесения в виде текста, поэтому нам прийдется сначала по шаблону сформировать PDF (каждый код уникален), а потом еще и напечатать PDF и делать это видимо через отправку растра на принтер.
В GS1 DataMatrix две разные роли играют две разные вещи:
в начале символа должен стоять FNC1 — по нему ридер понимает, что это GS1 DataMatrix (идентификатор символики ]d2), а не обычный DataMatrix (]d1);
между полями переменной длины (после серийного номера 21, после 91 и т. д.) стоит разделитель. Внутри символа он тоже кодируется как FNC1, а сканер выдаёт его как символ GS (ASCII 29).
Если в начале оказался GS вместо FNC1, символ формально становится обычным DataMatrix, у которого первый символ — GS. Приложение «Честный ЗНАК» такое прощает, а кассы и программы, которые проверяют структуру строго (как «ЧЗ Бизнес»), — нет.
Поэтому в GoLabel II у объекта DataMatrix нужно включить флажок «GS1 Datamatrix»: тогда принтер сам ставит FNC1 в начало. Разделители между полями оставьте как есть, не добавляйте GS вручную в начало строки.
Проверить результат можно любым ридером, который показывает идентификатор символики: должно быть ]d2.