Pull to refresh

Comments 13

Статья размещена в хабах .net и Microsoft SQL Server, но о них в статье не упомянуто. Если возможно, неплохо было бы развить и эту тему, а то сейчас в статье только о ZPL.

Например, было бы интересно услышать о том, на каком подходе вы остановились при хранении в таблицах datamatrix-ов: бинарный image/blob или текст, если текст, то вырезаете ли FNC1 или он вам неудобств в хранении не доставляет?

А почему бы не генерировать qr-код и этикетку автоматически при печати, зачем хранить?

Один раз только видел хранение в blob-е и не было возможности спросить причину. Возможно, она всё-таки существует :-)

Лично я храню в тексте и без управляющих символов - они только мешают. При печати подставляю их автоматически. Если интересно, чем мешают, то немногим:

  1. Управляющие символы трудно набрать с клавиатуры, поэтому неудобно вручную делать запросы "SELECT * FROM table_name WHERE barcode='xxx'". Это приходится делать часто при разборе ошибок, а при внедрении - вообще ежедневно.

  2. Управляющие символы часто "теряются" при передаче между разными приложениями. Например, приходилось импортировать штрихкоды из какой-то старой версии 1С, которая не могла передать FNC1 ни в каком виде: ни в файлах, ни через внешние источники данных, ни через post-запрос.

  3. Иногда приходится пользоваться сканерами, работающими в разрыв клавиатуры, а они в нём не умеют их передавать.

Мой опыт кратенько выглядит как-то так.

^FOx,y — отступ от левого верхнего края, принимает значение от 0 до 32000

А измеряются x и y в единицах, заданных последней командой ^MU. По умолчанию это точки, чей размер зависит от разрешения принтера. Для создания этикеток, одинаково выглядящих на принтерах с разным разрешением, удобно работать в миллиметрах, ^MUm.


При этом стоит всегда возвращать единицы к точкам в конце этикетки: ^MUd^XZ.
Это потому, что драйверы Zebra, когда транслируют печать из обычного приложения в ZPL, обнуляют все персистентные параметры, а единицы измерения обнулить забывают. (Писали про это в поддержку; не удалось попасть на кого-то, кто понял бы, о чём мы вообще.)
В результате драйвер выдаёт команду напечатать что-то по координатам, скажем, (1000, 500), думая, что это в точках. Но поскольку последний заданный режим был в миллиметрах, картинка рисуется на метр вправо от границы этикетки, и этикетка выходит пустой.


При этом в режиме без поворотов, отражений и справаналевости ^FO определяет левый верхний угол результирующей строки/картинки/штрихкода. ^FT определят левый нижний. Иногда удобно одно, иногда другое.


^FDdata — символ начала текстового поля

Нет, это символ начала поля данных. Эти данные могут принадлежать чему угодно, не только текстовому полю. В частности, это может быть наполнение штрих-кода.


^FS — символ конца строки

Нет, это символ конца определения поля, начатого ранее. Концы строк сами по себе никак не маркируются.


^FB maxWidth, maxLines, lineSpacing, alignment, hangingIndent

Полезно помнить, что ^FB — уникальная команда, которая недокументированно игнорирует единицы измерения, заданные в ^MU, и трактует все свои измерения как заданные в точках.
Полезно также помнить, что если текст не уместится в maxLines, то весь не уместившийся текст будет печататься поверх последней строки, снова и снова, пока не кончится.


Тема ^TB, улучшенной версии ^FB, не раскрыта!


По какой-то причине, некоторые принтеры не хотят воспринимать последний параметр после ^BQ, но воспринимают его после ^FD:

Потому что документировано, что для ^BQ строка данных ^FD должна начинаться с дескриптора, описывающего характеристики QR. Если его опустить, могут быть потеряны первые три символа данных.

Спасибо за развёрнутый комментарий.
Исправил указанные Вами неточности.
С ^TB не сталкивался, поэтому не описал в статье, учту в дальнейшей работе.

Во внутреннем вебинтерфейсе принтера тоже есть предпросмотр из кода, но на этом сайте намного удобнее работает. Содержимое каталога, создать сценарий, изменить, предварительный просмотр наклейки.

Да, так же мне показалась удобной возможность передать изображение сразу при написании этикетки

Тоже начинали с ZPL, потом перешли на печать через драйвер печати. Отказ ZPL помог легко перейти на дешевые и качественные китайские принтеры

на линуксе имею опыт печати на зебру только ZPL через SMB

Где же вы раньше были?

Не читал, но одобряю. Не читал т.к. 4 месяца назад мне вот ровно вот это все нужно было для Честного Знака, генератор ZPL команд писал. Пришел к тем же ресурсам и всей информации в итоге, что и вы. Особенно тогда пригодилась бы инфа про FNC1 и GS.

Штрихкоды — ерунда. Вот с печатью картинок на этикетках коллеги знатно помучились. Особенно, когда кроме Зебры одновременно используются ещё и другие аналогичные принтеры, которые хотя и совместимы, но есть нюансы.

Картинки — это всякие там рюмочки (хрупкое), стрелочки, указывающие направление верха, знаки переработки, значки стантдартов и прочее.

Отдельный квест — подбор этикеток и риббонов (красящих лент). Когда расход измеряется в сотнях километров, хочется подешевле; но тогда уже качество страдает. Ну и этикетки разные нужны — в гарантийный талон и обычные подойдут, а на изделия нужны устойчивые к истиранию и мойке.
Sign up to leave a comment.

Articles