Comments 13
Статья размещена в хабах .net и Microsoft SQL Server, но о них в статье не упомянуто. Если возможно, неплохо было бы развить и эту тему, а то сейчас в статье только о ZPL.
Например, было бы интересно услышать о том, на каком подходе вы остановились при хранении в таблицах datamatrix-ов: бинарный image/blob или текст, если текст, то вырезаете ли FNC1 или он вам неудобств в хранении не доставляет?
А почему бы не генерировать qr-код и этикетку автоматически при печати, зачем хранить?
Один раз только видел хранение в blob-е и не было возможности спросить причину. Возможно, она всё-таки существует :-)
Лично я храню в тексте и без управляющих символов - они только мешают. При печати подставляю их автоматически. Если интересно, чем мешают, то немногим:
Управляющие символы трудно набрать с клавиатуры, поэтому неудобно вручную делать запросы "SELECT * FROM table_name WHERE barcode='xxx'". Это приходится делать часто при разборе ошибок, а при внедрении - вообще ежедневно.
Управляющие символы часто "теряются" при передаче между разными приложениями. Например, приходилось импортировать штрихкоды из какой-то старой версии 1С, которая не могла передать FNC1 ни в каком виде: ни в файлах, ни через внешние источники данных, ни через post-запрос.
Иногда приходится пользоваться сканерами, работающими в разрыв клавиатуры, а они в нём не умеют их передавать.
Мой опыт кратенько выглядит как-то так.
^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. Если его опустить, могут быть потеряны первые три символа данных.
Отдельное спасибо за
для редактирования этикеток без печати я использую: Labelary Online ZPL Viewer
Тоже начинали с ZPL, потом перешли на печать через драйвер печати. Отказ ZPL помог легко перейти на дешевые и качественные китайские принтеры
Где же вы раньше были?
Не читал, но одобряю. Не читал т.к. 4 месяца назад мне вот ровно вот это все нужно было для Честного Знака, генератор ZPL команд писал. Пришел к тем же ресурсам и всей информации в итоге, что и вы. Особенно тогда пригодилась бы инфа про FNC1 и GS.
Картинки — это всякие там рюмочки (хрупкое), стрелочки, указывающие направление верха, знаки переработки, значки стантдартов и прочее.
Отдельный квест — подбор этикеток и риббонов (красящих лент). Когда расход измеряется в сотнях километров, хочется подешевле; но тогда уже качество страдает. Ну и этикетки разные нужны — в гарантийный талон и обычные подойдут, а на изделия нужны устойчивые к истиранию и мойке.
Как приготовить Зебру (Мой опыт в ZPL)