Принтер Godex G500 и напечатанные этикетки на EZPL
Всем привет! Вот блин когда я ради прикола делал себе расклад на Таро на тему того, какой из принтеров мне брать: WAGO SmartPrinter или GODEX G500, который я в итоге и купил, то там про Godex было сказано что он будет родным чем-то. И тогда я ещё тупил как это читать в раскладе и о чём речь шла =) В итоге оказалось, что я с этим принтером разве что только ещё не спал в обнимку. Я с ним постоянно таскаюсь и чего-нибудь печатаю или генерирую новые идеи о том, как бы его применить. Если вы помните предыдущий пост про него (на который я ссылку давал в начале абзаца), то вы видели что я печатал на Godex маркировку для модульки, кабелей и прочих штуковин в щитах. У меня появились идеи применить его ещё и для того, чтобы печатать всякие этикетки на коробки с материалами, на папки с документами по щитам (чтобы не потерять) и для кучи всего другого.
Но встал один вопрос: как сократить геморрой, связанный с постоянной перенастройкой свойств принтера в Windows под разные этикетки и параметры печати? Конечно же, этот вопрос я решил (потому что большинство материала на блоге как раз и пишется в состоянии «Я — сделал! И могу вам сделать так же!»), но я хочу показать вам то, как я дошёл до своих решений и с чем столкнулся.
Первое, с чего всё началось — это с того, что я понакупил разных этикеток разного типа и размера для экспериментов. В какой-то момент меня задолбало вспоминать, какой рулон какие размеры имеет и как выглядит, и я сделал себе лист из кусочка обложки папки, на котором все свои этикетки и понаклекил и подписал, какая для чего у меня используется.
Различные типы и форматы этикеток для печати
Некоторое время (довольно небольшое) я делал всё, как описывал в прошлых постах: брал WAGO SmartScript, подбирал там шаблон и макет этикетки, менял текст и печатал всё это на принтере. У меня начали собираться файлы шаблонов. Каждый из них я открывал руками, менял там данные на те, которые мне нужны сейчас, настраивал принтер и печатал. Вроде всё шло ровно и гладко и мне даже нравилось, но внутри точил какой-то червь, который вкрадчиво говорил мне, что СТОЛЬКО возни ради того, чтобы напечатать одну этикетку на папку с документами — это хрень и что надо думать дальше, как это всё автоматизировать и упрощать!
Ну а потом — я ЗАДОЛБАЛСЯ, после того как раз пять поделал такие этикетки, и стал изучать тему принтеров маркировки глубже, чтобы упростить себе задачу. Ничего пока не понятно, да? ;) В чём был геморрой? А вот я сейчас и расскажу. Итак, если мы хотим сделать какую-то этикетку в любой программе (можно хоть в Word), то сначала нам надо её отрисовать и несколько раз протестировать, как она печатается: не вылезает ли за ленту этикеток, всё ли печатается, ничего ли не теряется? После того, как мы изведём несколько метров этикеток, мы получим наш шаблон. Положим, он будет выглядеть вот как-то так:
Разработка этикетки в программе WAGO SmartScript
Это скриншот заготовки двух этикеток в WAGO SmartScript. Каждый раз, когда нам надо напечатать какие-нить этикетки на материалы, нам надо открывать наш шаблон и вручную набивать тексты — как там звали контрагента, какой у него номер заказа был и прочее. И это у меня ещё простенькая этикетка, для тестирования! А вот когда я начал печатать шильдики на щиты — то тогда и начал плакать, заполняя данные вручную из своей 1Ски для каждого щита. Всего лишь ради одной-двух наклеек.
Но это ещё не вся часть геморроя. Ведь этикетки у меня же РАЗНЫЕ! Например есть 100х60 для печати шильдиков на крупные щиты. А есть 100х35 для материалов или 58х30 для мелких наклеек на папки с документами. Для КАЖДОЙ из них надо было создать свои настройки печати и подогнать принтер и шаблон под них. Вон, сколько их пришлось добавить. И это ещё хорошо, что в драйверах Godex есть фича экспорта-импорта этих настроек. Иначе было бы совсем плохо.
Настройка драйверов принтера под нужный формат печати
Дальше мы берём наши этикетки и заправляем их в принтер.
Установка этикеток нужного формата в принтер
…но и это ещё не всё! Если мы печатаем из-под Windows, то после этого принтер надо почти всегда калибровать! Для этого мы выключаем его питание, зажимаем кнопку, включаем питание. После того как принтер пикнет, отпускаем кнопку. И принтер радостно пролистывает некоторое количество ленты с этикетками (от нескольких сантиметров до метра), подстраивая датчики под их размеры.
Куча этикеток ушла в труху при калибровке принтера
Ну а потом можно печатать наши две или четыре этикетки на материалы.
Напечатанная этикетка из программы WAGO SmartScript
Полезным от этого всего было то, что задания печати оставались в очереди принтера (для этого в Windows-настройках печати надо поставить галочку «Сохранять задания после печати») и при желании их можно было повторить ещё раз (выбрав из контекстного меню пункт «Перезапустить»).
Задание печати от WinPrint осталось в системе
Вот честно. Вы бы расстроились, купив принтер, в котором есть тьма возможностей (и сетка, и большой рулон риббона, и большая ширина печати), и КАЖДЫЙ РАЗ при смене этикеток выкидывая ТАКОЙ кусок этикеток в помойку? А если это будут этикетки для модульки, которых на таком кусок может быть штук 100 из рулона в 3000 штук?
Огромный расход этикеток при печати WinPrint
И вообще, вас бы радовал весь этот геморрой с перенастройкой свойств принтера для каждого типа этикеток? Меня дико не радовал и я даже пытался себе врать, что я типа принимаю этот принтер таким какой он есть и что на самом деле всё хорошо и так и надо, и ничего не поделаешь. И что все остальные системы печати из 1С, из специальных программ якобы сложные, потому что там есть какой-то язык программирования EZPL, нужны какие-то компоненты и что наверное там каждую точечку этикетки надо будет программировать или нудно вычислять, какая ширина текста будет в точках, чтобы правильно его рисовать… А самое «страшное», чего я боялся — что все мои этикетки в итоге смогут быть только простыми и лаконичными, и что кроме текста ничего в них не напишешь.
Но я ошибался, потому что может быть лет десять назад именно всё так и было (когда я админил на Фабрике АБТ), но сейчас всё проще и интереснее. Но перед тем, как радоваться новым интересностям, я расскажу немного теории, чтобы опять же тот, кто читает этот пост, не боялся и знал, с чем он столкнётся. Ну а вообще именно Godex меня пропёр своей техподдержкой, своей лаконичностью и удобностью, что я с их принтерами работать дальше и хочу и буду рекомендовать их всем, кто спросит.
Итак, для любого принтера (даже обычного) есть два способа печати. Один из них можно обозвать как WinPrint, а другой как RAW. Мы чаще всего пользуемся именно WinPrint’овским способом, когда печатаем при помощи штатных диалогов «Печать…», где можно выбрать число копий, двухстороннюю печать и прочие настройки принтера. Windows создаёт для нас задание печати, следит за тем, пошло ли оно на принтер и управляет самим принтером. Если почитать программерские книжки по поддержке печати в Windows, то там будет рассказано о том, как операционная система считывает метрики принтера, страницы, печатаемого документа. Как программы получают размеры TrueType-шрифтов, как это всё правильно масштабируется и рисуется на DC (Device Context или Canvas в Deplhi) принтера так же как на экране.
Технически в этом случае на принтер передаётся огромный метафайл (картинка в формате EMF), который принтер поточечно выводит на бумагу или этикетку, совершенно не зная про конкретные шрифты, про страницу и прочее. И вот для всего этого принтеру и требуются настройки бумаги и полей. В том числе такие же настройки требуются и для этикеточного принтера. А если их задать неправильно — то мы получим или плохо отмасштабированную этикетку или хрен знает что. Поэтому для этого способа печати как раз-таки и надо будет постоянно лазить в настройки дров и калибровать принтер под текущие этикетки.
А ещё иногда бывают проблемы с масштабированием. Например Visio на обычных принтерах умеет масштабировать всё так, что даже точные миллиметры соблюдаются, а на Godex масштаб всегда сбивается в 100 раз меньше. Зато тут у нас есть куча удобных галочек и ещё и Windows штатно следит за заданиями печати, и может их даже нам на память сохранить, как я выше и показывал.
Но те, кто знакомы со всякими промышленными (и не очень) принтерами, знают что у некоторых принтеров есть свой собственный язык команд. Насколько я знаю — у HP это язык PCL. Такой же по смыслу язык есть у Adobe в своих файлах PDF и других продуктах. Эти языки я обозвал у себя в посте типом RAW, потому что если мы общаемся с принтером таким языком, то на него передаются низкоуровневые команды, а не какой-нибудь там отрисованный метафайл.
Мда, кривоватое пояснение получилось. В общем, у некоторых принтеров есть способ забить на WinPrint нафиг и работать с принтером совсем-совсем напрямую. Загрузить в него JPEG и сказать: «А нарисуй-ка его вот тут!» или загрузить шрифт(ы) и попросить его написать ими текст. В обычных принтерах такое используется, скорее всего, во всякой полиграфии. А вот для принтеров этикеток и штрих-кодов такой способ работы наоборот — самый что ни на есть основной!
Самое главное — это то, что такие команды принтер понимает НАПРЯМУЮ без Windows. Поэтому в этом случае никакие настройки драйверов (размер бумаги и прочее) не действуют ВООБЩЕ. Для нас это очень-очень хорошо, потому что мы сможем моментально перенастраивать принтер на нужную нам этикетку программно!
Так вот у GODEX есть свой собственный язык команд — EZPL (EZ Programming Language), при помощи которого с принтером можно делать что угодно: он становится как послушная зверушка. Я попробую свести в кучу всё, что узнал про этот язык. Большинство этой информации подходит ко всем другим принтерам (Zebra, например). Ну разве только что команды будут различаться.
- Команды чаще всего текстовые и пишутся английскими буквами со специальными управляющими символами — например «^H10».
- Все координаты объектов даются в точках. Если нам нужны миллиметры — то надо будет самостоятельно пересчитать точки в миллиметры в зависимости от текущего разрешения принтера.
- Команды можно давать как на терминал — сразу пачкой, частями. В конце всего даётся специальная команда, которая и заставляет принтер напечатать то, что вы в него понапосылали. У Godex это команда «E» (без управляющего символа).
- В этом случае принтер ВООБЩЕ не знает ни о каких шрифтах или картинках. Поэтому всё, что вы хотите на нём печатать — вам придётся в него загрузить руками. Вот хотите напечатать JPEG-логотип? Загружайте его в принтер, и печатайте. Это — самое главное отличие от технологии WinPrint, где на принтер просто посылается готовая картинка. Со шрифтами — точно также. Можно загрузить в принтер TrueType-шрифт, и он будет его рисовать и масштабировать сам.
- Память принтера ограничена и построена на базе Flash-технологии. Поэтому слишком много в него непоназагружаешь — или не хватит места, или если постоянно загружать всё подряд, внутренняя флешка сдохнет. Но обычно этого не требуется, потому что в итоге, когда с принтером осваиваешься и затачиваешь его под свои нужды, из шрифтов будет нужно два-три или пять, а из картинок — чуть ли не один логотип, и больше ничего.
- Внутри память принтера разбита на ячейки, которые обозначаются буквами английского алфавита A-Z. И в командах и пишется что-то типа «ATA» — текст шрифтом из ячейки «A».
- Все штрих-коды рисуются самим принтером тоже командами. Поэтому можно забыть про всякие платные обработки рисования штрих-кодов для 1С, например.
- Через эти команды можно настроить все-все, даже системные параметры принтера: и нагрев, и скорость печати и кучу всего ещё.
- А самое главное в том, что если мы меняем размер этикетки командами EZPL, то принтеру нафиг не нужна перекалибровка! Если мы поменяли размер и заправили новые этикетки, то первую-вторую из них он напечатает криво, а потом сразу сам подстроится под новый размер! И прощай, длинные метры ленты! УРА! Иногда бывают и косяки, и не всегда принтер перестраивается гладко. Но одна перекалибровка на десяток смен этикеток — это вам не каждый раз по метру ленты выкидывать!
И вот тут я испужался: это ж придётся читать PDF на 200 страниц на английском, потом изучать всякие координаты, команды и пробовать, пробовать… Но оказалось всё гораздо проще. Конкретно у Godex вместе с принтером идёт программа GoLabel, в которой можно проделать всё тоже самое, что можно делать командами принтера. И вот про неё я сегодня порасказываю.
Единственное, что у этой программы дерьмовое — это интерфейс. Вот насколько Godex красиво написал свои драйвера для принтера, в которых очень много настроек, удобных окошек, настолько плохо у него сделана GoLabel. Самое главное — в ней нет функции отмены последнего действия (Ctrl+Z или Alt+Backspace). Случайно ткнул мышкой не туда — и сдвинул какую-нибудь рамку этикетки. Ну а сами менюшки и рабочая область сделаны под мудацкий ленточный интерфейс, в котором хер что найдёшь: без надписей кнопки непонятны, потому что использованы нестандартные значки, а с надписями кнопки отжирают огромную часть экрана.
Но временно (потому что потом я покажу, как я сделал кучу шаблонов) от этой программы никуда не деться, потому что при помощи неё можно сделать кучу низкоуровневых настроек принтера: например, настроить IP-адрес для того, чтобы он работал по сети, а не по USB. Программа может работать в один момент времени только с одним принтером. Каким именно — надо указать в настройках программы «Основной -> Настройки Печати -> Интерфейс принтера».
Внимание! Если принтер сетевой, то программа коннектится к принтеру по TCP/IP и для неё надо создать правило в файерволле. Если правила не будет и файерволл будет блокировать доступ программы к сетке, то она будет показывать ошибку подключения к принтеру и сразу же падать. Видать разработчики где-то в коде решили не делать парочку проверок на ошибки открытия порта TCP/IP в расчёте «А, ну если тут прошло — то уже ничего не будет».
Главное окно программы поделено на выбор всяких объектов для рисования и на область команд справа. Эта область команд и есть самая главная фишка программы, и нам она потом очень-очень пригодится для создания своих шаблонов.
Программа GoLabel: рабочая область для рисования этикетки
Сразу же при запуске программа спрашивает нас, этикетку какого размера мы хотим создать. Рисует она её странно: левые-правые поля показывает верно, а верх-низ куда-то смещает за границы этикетки. Поэтому я указываю только левые-правые поля, а верх-низ — нет.
Программа GoLabel: настройка размеров этикетки
На другой вкладке можно настроить ещё и тип этикетки. Если вы помните прошлый пост, то такие же настройки были в драйверах принтера. Но там их пришлось бы менять каждый раз, а в GoLabel они будут храниться для каждой этикетки персонально.
Программа GoLabel: настройка типа этикетки
Также в GoLabel есть все системные команды принтера. Принтер можно откалибровать, перезагрузить, закачать в принтер какие-нибудь объекты или удалить их оттудова. Интерфейс программы всё-таки ужасен. Он напоминает мне полукривые поделки на Visual Basic, увешанные тьмой компонентов =)
Программа GoLabel: меню для системных настроек принтера
При помощи GoLabel можно настроить самое главное — IP-адрес принтера, чтобы он работал по сети. Я у себя подсел на сетевые принтеры и давно забыл про USB кроме флешек. Сейчас даже всякие контроллеры по сетке прогаются.
Программа GoLabel: настройки IP-адреса принтера
Если хочется — то ещё можно настроить принтер так, чтобы он и EMail слал при всяких ошибках или работал по SNMP. И напоминаю, при этом принтер стоит около 20-22 тыр!
Программа GoLabel: настройки SNMP и EMail-уведомлений от принтера
Чтобы чего-нибудь делать с нашей этикеткой, надо выбрать какой-нибудь объект (линию, прямоугольник, штрих-код или текст) слева на панели и нажать на него один раз мышкой. А после этого ткнуть мышкой в этикетку. Сразу откроется окно всех возможных настроек для элемента. Я выбрал обычный штрих-код по EAN13, но вариантов этих кодов — навалом. Для каждого штрих-кода настраиаются его высота, ширина и поворот.
Настройки для обычного штрихкода
Попутно надо упомянуть о том, что все элементы этикетки относительно друг друга можно переставлять на передний или задний план. Это будет надо, если мы хотим сделать вокруг штрих-кода например рамку. В некоторых случаях сам напечатанный штрих-код получается по размерам меньше, чем поле в рамке, которое для него отводится. И нам надо или делать дофига пустого места вокруг, чтобы штрих-код не перекрывал рамку, или просто поместить штрих-код под рамку. Вот для этого эти команды и нужны.
Изменение расположения элементов этикетки
Технически в EZPL это реализовано по местоду «Кто первый встал — того и тапки». Что первым нарисовали — то и будет под следующим нарисованным. Также можно рисовать всякие другие штрих-коды. Например QR-код, который сейчас везде популярен. Это код, который может содержать многострочный текст. Сейчас у нас удобно кодировать в него какой-нибудь URL: с информацией про товар, объект или чего-нибудь подобное.
Настройки для отрисовки QR-кода
Размер QR-кода напрямую зависит от количества данных, которые в нём закодированы. Чем длиньше строка текста — тем больше сам код по ширине и высоте. Поэтому проверяйте размер кода на максимально длинной строке данных, чтобы он у вас потом за край этикетки не вылез. Для меня ещё и ещё раз было удивительно то, что принтер все эти коды генерирует сам. Например для QR-кода ему достаточно дать команду типа «W6,14,5,2,Q,8,5,16,0 https://cs-cs.net», и всё будет нарисовано аппаратно.
Теперь поразбираемся со шифтами. В них есть много наворотов и разных типов шрифтов:
- Встроенные шрифты. Это шрифты, которые зашиты в принтер намертво. Точнее, один шрифт, который зашит в нескольких размерах.
- Загруженные шрифты. В этом случае шрифт в принтер грузится как картинка bmp, и поэтому можно выбрать только один шрифт и только одного размера. Зато этим шрифтом можно фигачить многострочный текст автоматически (принтер сам будет переносить буквы на новую строку).
- Шрифты TrueType. Здесь в принтер грузится шрифт целиком, и принтер сам меняет его размер как нам надо. Но многострочный текст в этом случае напечатать будет нельзя, и надо будет переносить его самостоятельно, разбивая всё на строки руками. Зато шрифт можно загрузить один раз и использовать в нужных размерах без заморочек.
Настройки вывода шрифтов и возможность загрузить свои шрифты
В любом случае кнопка «Загрузить шрифт» выводит окно выбора шрифта (я показал для TrueType) и окно выбора, куда этот шифт грузить ( в какую ячейку памяти). Для разных типов шрифтов есть свои ячейки памяти. Для обычных шрифтов они будут обозначаться префиксом «V» («VA», «VB», «VC» и так далее), а для TrueType — «T» («TA», «TB», «TC» и так далее).
Загрузка своих шрифтов в принтер
Ну а после того как шрифт загружен — можно выбрать его для вывода текста. Мне хватило парочки шрифтов Tahoma и Tahoma Bold для всех своих задач.
Вывод текста загруженными шрифтами
По такому же приницпу устроена и загрузка картинок. По возможности картинку лучше заранее перевести в чёрно-белый режим и сохранить в каком-нибудь формате без потери качества (bmp или gif). Картинки в принтере хранятся по текстовым именам, как файлы. Ну и понятно что память принтера под это всё ограничена несколькими мегабайтами, так что особо там не развернуться.
Внимание! GoLabel тяжко переживает перенос принтера на другой компьютер. Я тестировал принтер на втором компьютере и у меня не получилось настроить GoLabel так, чтобы она увидела те объекты, которые уже загружены в принтере. Показать она их смогла, а вот подставить их в списки выбора шрифтов (TA, TB) и рисовать макет этикетки — не смогла. Поэтому мне пришлось на втором компе заново загружать все шрифты только для того, чтобы их увидела GoLabel.
Ну, после мелких тестов, у меня получилась вот такая этикетка.
Тестовый макет этикетки в GoLabel
Нажимаем на печать и получаем её же на выходе из принтера. Только вы видите, что наша этикетка уехала вверх: верхней рамки не видно.
Распечатали тестовую этикетку из GoLabel
Это происходит из-за того, что принтер не всегда точно определяет границу этикеток. Иногда этикетку может перекашивать и по горизонтали, если вы её неровно заправили. Так как мне нравятся рамочки, то я просто делаю отступы со всех краёв побольше, чтобы по краям этикетки оставался запас места.
Вот примерно так выглядит весь процесс создания и подгонки этикетки. Самих этикеток ушло примерно столько же, сколько уходит на одну калибровку принтера.
Процесс подгонки и создания новой этикетки для принтера
И тут надо остановиться и задуматься. Это вот всё красиво. Мы сдизайнили и отладили печать одной этикетки. Теперь мы можем напечатать десяток или сотню её копий и обклеить товар. Но что делать, если надо печатать этикетки с меняющимся текстом (например на разные товары или на модульку для щита)?
А пожалуйста! В GoLabel есть и такая фишка. Она может брать данные из какой-нибудь базы или XLS-таблицы и подставлять их в нужные места. Смысл примерно такой: мы скрамливаем программе файл с данными. Она считывает его и берёт оттуда названия всех полей. А потом позволяет подставлять эти называния полей в нужные места текста. Печатать этикетки можно выборочно, отбирая галочками нужные записи данных.
Для примера у меня валялся файл от одного из щитов. Это обычная таблица Экселя, в которой первые строки содержат названия «полей» данных. У меня в нём только одно поле — маркировка модульки.
XLS-файл источника данных
В GoLabel прямо при редактировании текста на вкладке «Источник данных» можно выбрать опцию «База данных». И сразу же появится кучка окон, одним из которых будет окно подключения к нужной нам базе данных или файлу.
Подключение из GoLabel к внешнему источнику данных
После этого можно выбрать «таблицу» и «поля» базы. Для XLS это будут названия листов и заголовки столбцов.
Выбор полей источника данных для печати
Эти данные можно отфильровать (вкладка «Запрос») или отсортировать (вкладка «Сортировка»). А в конце можно посмотреть на то, что получилось.
Считанные данные из XLS-файла
Теперь надо взять наши же текстовые поля (или штрих-коды) и, выбрав базу данных, нажать кнопку «Вставить поле». Поле можно вставить или вместо текста или прямо в текст. Оно указывается порядковым номером с префиксом «^F», например «^F00» — первое поле, «^F01» — второе и так далее.
Добавление полей из источника данных в этикетку
Если такие поля есть и база данных открыта, то у GoLabel в верхнем меню появляются кнопки перемещения по записям, и можно пролистывать все этикетки, которые получатся при использовании базы данных. А при печати можно выбрать, какие записи из базы печатать: достаточно поставить или поснимать галочки:
Возможность печати нескольких разных этикеток
Вот благодаря этой фишке при помощи GoLabel можно печатать разные переменные данные. Даже в принципе можно накрутить какую-нибудь 1С или обработку, которая подготовит XLS или DBF, и натравить на него GoLabel для печати. Вот это даже будет похоже на автоматизацию. Правда всё равно придётся вручную открывать файлы и тратить на это время.
Попутно замечу ещё вот что. GoLabel шлёт команды на принтер напрямую, и поэтому задания печати в Windows не формируются: Windows вообще в этот момент не знает, что на принтере печатают.
А теперь — главный гвоздь GoLabel, ради которого всё затевалось. Справа от области, где мы рисуем этикетку, есть небольшая панелька — окно команд. И при помощи кнопок, а конкретно — кнопки «Export» — можно ВСЮ текущую этикетку (и ещё и настройки бумаги, принтера) вытащить в виде тех самых команд принтера на EZPL! Благодаря этому можно нарыть часть команд даже не читая документацию по EZPL. Например команда ^H отвечает за нагрев, а ^S — за скорость печати (их на скриншоте ниже не видно). Все штрих- и QR-коды точно так же кодируются обычным текстом, так что поменять значение кода проблем не составит.
Экспорт команд этикетки на языке EZPL
И так как все эти команды фигачатся открытым обычным текстом, то мы можем это использовать! Например, скопировать их оттуда и создать какой-нибудь шаблон для печати. Всё, что нам надо — создать текстовый файл и разобраться с кодировками. А это может сделать любой-любой скрипт или любой язык программирования.
После этого например 1Ска может сделать вот такой вот файл, в котором содержатся команды принтера. И отправить его на принтер! И принтер будет печатать, причём ему (как я уже писал выше) будет плевать на настройки Windows. И вот это вот — самое крутое!
Файл с тестовыми командами EZPL, сгенерированный из 1C
По поводу кодировок. Можно перевести принтер и все текстовые поля в кодировки UTF8 (как сделано по умолчанию). Но так как у меня 1Ска выдаёт всё в Windows-1251, то я подгрузил в принтер вместе со шрифтами нужные кодовые таблицы (они есть в комплекте GoLabel) и перенастроил принтер и шрифты на Windows-1251.
Первое, что я сделал — ради прикола набил на 1С обработочку, которая умела переключать скорость принтера (той командой «^Sx») и печатать несколько копий текстовой этикетки.
Тестовая обработка, которая генерирует файл команд из 1C
Ну и побаловался с ней, потратив часть рулона =) Зато получил удовольствие: нажимаешь кнопочку — и принтер сразу печатает!
Тестовые этикетки, распечатанные на EZPL из 1С
Но не всё так просто, как кажется. Дело в том, что просто так отправить команды на принтер получится, если он подключен у вас по RS-232 (COM-порт). Тогда порт можно открыть как файл и высылать туда все данные напрямую. Ну или сделать что-то типа «Copy Commands.txt COM1» в батничке. А вот как быть с USB или LAN? И я решил эту задачу! А вот почитайте вот этот пост: Маркировка: Отправка RAW-команд на принтер (EZPL, PCL).
Проекту исполнилось 15 лет! Поддержать проект материально, проспонсировать проекты Автора или сделать ему подарок можно на этой странице: "Донаты и Спонсорство, Список Желаний".
Спасибо, очень полезная статья, для тех, кто сомневается, какой принтер купить.
Был момент, когда докупал принтеры и взял как раз Годекс. Исплевался и оставил до программиста. Потом принтер сгорел в пожаре и больше я к нему не возвращался.
Поскольку с принтерами, например, Зебра, идет нормально ПО, в котором можно печатать все, что угодно, без калибровки, монтировки, сноровки и прочей шнуровки.
Дороже на пять копеек, но любая девочка в офисе разберется.
Респект за подробный отчет и потраченное время.
Да и тебе за забавную историю спасибо! Я иногда прихожу к выводу, что каждый находит себе что-то по душе. Вот мне Godex по душе пришёлся,а Zebra показалсь попсовой и некрасивой. И я думаю, что у меня по аналогии с твоей историей с ней бы не сложилось.
А в статье у меня получается как обычно и как везде: я от чего-то пропираюьс, вычленяю из этого общие принципы (как устроено и как работает) и предлагаю действовать по аналогии. Вот!
большое спасибо тебе ДОБРЫЙ ЧЕЛОВЕК, помог разобраться с этими долбаными шрифтами… благодаря Вам мой кошмар с программированием этикеток на 1100 EZта закончился…
Sagitta На здровье!
Почитал статью до покупки принтера, нацелился на GODEX G530 с USB (думаю, сэкономить на ethernet, хотя не уверен что потом не пожалею). Спасибо автору, я получил развернутые ответы на все интересующие вопросы.
vardan Ой! Автору тоже приятно, что его читают и по таким вопросам!
Мой Godex с тех пор вовсю пашет и работает. Всё хорошо, всё без сбоев. Нагрузка у меня малая — откатал за эти годы около 5 рулонов риббона по 300 метров.
Основная нагрузка у меня приходится на открывание-закрывание узла с головкой, чтобы этикетки менять. Всё норм, пока ничего не отвалилось! Блин… а ведь около 4 лет прошло! =)
Вот и я, наконец-то, обзавелся таким принтером. Точнее, Gpdex G530. Разрешение 300 dpi вместо 200.
Пока жду материалы от Элегира, попробовал подключить-настроить-поиграться с обычным рулончиком этикеток для прямой термопечати (достался вместе с принтером, он в каком-то магазинчике раньше работал).
В принципе, дрова встали, golabel тоже. Но есть одна непонятка. Наклейки примерно 58х40 мм. Ввел, соответственно, эти размеры и ширину зазора (2 мм).
Нарисовал какую-то просто табличку (пустую) во весь размер наклейки.
Печатаю. На экране все нормально, на принтере масштаб раза в полтора больше. То есть, не влезает, часть таблички за пределами наклейки. Раза три проверил, что нашел — один хрен.
И расположение содержимого наклейки почему-то не по центру. То ли из-за увеличенного масштаба (похоже).
Где это может настраиваться, кто знаток программы?
ps: Элегировский софт по имени принтера вычислит, что это не 200/230? Они говорили, что строго с их годексами программа работает.
loa Так твой Godex ВООБЩЕ не будет работать с софтом от Elegir. Будут работать только их принтеры.
Описанная проблема — точно в разрешении. Проверь эти моменты:
а) В настройках печати в GoLabel проверь, чтобы стояло нужное разрешение (300 dpi).
б) Перейди в GoLabel на единицы измерения в пикселях и проверь, совпадает ли там всё. А то она по умолчанию в мм работает.
PS. Про Elegir пост напишу под конец месяца. Там 70 фоток вышло.
Я втайне рассчитывал, что их софт все-таки опознает брата и позволит что-то сделать. Но таки нет. Ну да ладно.
Единицы измерения там действительно миллиметры стояли. Немного странно, если это приводит к глюкам, я же размеры всего остального тоже в мм указываю. Но если перевод в попугаи исправит ошибку, то я не против. Попробую.
Там еще периодически возникает упоминание о g500 (то ли в дровах, то ли еще где-то). И весьма похоже, что «что-то» подхватывает разрешение 200dpi вместо 300 и создает проблему.
Впрочем, доберусь до города, попробую поменять единицы измерения и тогда уже видно будет. Как раз часть маркировки приехала, уже можно будет модульку разрисовать.
А должен? Ведь его писали люди, и люди хотят впаривать свои принтеры (у которых узкая ширина печати и мало рибона влазит). С чего им думать о других?
Попробуй порыть настройки GoLabel и драйверов. Это прежде всего проверь.
И не забудь, что GoLabel печатает на принтере напрямую в EZPL и на неё настройки драёвера не действуют!
Разумеется, не должен. Вложили силы и средства, чтобы продавать свои принтеры, с другими моделями не работает — все честно.
У меня были некоторые сомнения насчет принтера, который мне достался, вдруг он устал за время работы у других пользователей. Но результаты калибровки печатает четко в этикетку, прошивку я залил самую свежую, какую нашел. Очень похоже, что проблема действительно в настройке golabel. Собственно, так и подозревал, но на миллиметры никак не мог подумать.
loa Так ты сначала до GoLabel доберись, потом будем думать.
У меня в настройках есть поле выбора DPI, но оно не активно.
Мысль про перейти на точки была одним из вариантов: ведь число точек при разных DPI — разное. По идее GoLabel должен верно переводить точки в мм — но вдруг?
НЕТ. Я ща посмотрел спеку языка EZPL — и там сказано, что он должен принимать любые единицы измерения. Поэтому рой дальше настройки или сделай принтеру сборс на заводские настройки.
Попробую, как только доберусь до города.
Есть и запасной вариант — некая альтернативная программа для печати, которая, видимо, хорошая, но платная. Если golabel не получится настроить, то для проверки можно пробной версией этой проги воспользоваться.
Хотя я пробовал печатать вообще из ворда, причем даже не из винды, а в макоси — драйвер для нее есть. Та же фигня.
Чудес не бывает, победим.
Да, и напиши тут. Нет, GoLabel должна печатать из коробки.
Какая-то хрень: печатает больше, чем надо и все тут.
Разрешение 300, все остальное вроде тоже нормально.
Винда пыталась поставить драйвер для g500, но, по совету установщика фирменного драйвера, я это пресек. (Раньше получалось два принтера в системе, 500 и 530 — вряд ли это хорошо).
Софтина golabel II, вроде более новая (но тоже убогая).
Принтеру я накатывал самую свежую прошивку (gotool’ом). Калибруется вроде нормально.
В чем же засада, блин?..
Блин! Вот жесть! Мне стало интересно, что это за фигня. Выдвигаю ещё версии:
* Принтер поддельный и на деле G500, а перешит как 530. Поэтому и винда хочет драйвер для G500 поставить.
* Принтер G530, но головка стоит от G500 (я не знаю, можно ли такое намутить вообще).
* ….а если напечатать на нём из Ворда (в свойствах принтера делаешь размер этикетки под твою, и размер бумаги в ворде — тоже)? Что будет? Потому что в этом случае данные обрабатывать будет драйвер, а не принтер.
* Почитать руководство по EZPL (я читал, ничего не нашёл; там можно задавать всё в мм или точках — принтеру пофигу): вдруг там есть какой-то коэффициент массштабирования.
Поставил драйвер в макось, попробовал из ворда напечатать.
Та же хрень. Подумал, подумал — ради эксперимента поставил драйвер для g500.
Вроде попадает. Интересно…
Из ёкселя тоже попробовал, но как-то не получается попадать куда надо.
В принципе, для наклеек на модульку/клеммы мне эти специальные софты и не нужны. Если просто из экселя можно было бы печатать, то и нормально. Все равно все обозначения в нем же. Но надо повозиться, видимо.
Попадает на драйвере от G500? Может, всё-таки, головка стоит там не та, на 203 dpi?
За сколько ты принтер брал?
Попробуй Wago SmartScript (в посте у меня была ссыль на скачивание, вот: https://cs-cs.net/wp-uploads/soft/WAGO_smartScript_Setup.exe). Под него можно шаблоны сделать (как я сделал), и им пользоваться.
Кстати! Вышел же пост про Элегир. Прям вот сегодня!
Поставил предыдущую версию проги.
Попробовал в настройках печати выбрать G500. Попадает. Сцуко.
Головка, что ли, неродная стоит?.. Как бы проверить?
Ну, кажется, не родная головка стоит!
Как проверить? Открутить и посмотреть, и поискать в инетах…
Я нашёл две ссылки:
* Головка 203 dpi, артикул 021-G50007-000
* Головка 300 dpi, артикул 021-G53007-000
…и стоят они как 2/3 принтера!
Принтер нашел на авито (б/у), какая-то лавка разорилась, они имущество распродавали. Вышло чуть больше десятки, то есть, весьма выгодно (новый тридцатку стоит).
В принципе, даже если он на самом деле 200dpi, то и несмертельно. Для клемм/модульки этого хватит.
Про пост про Элегир хорошо, что написал — раньше я rss пользовался, автоматом прилетали новые посты. Но уже давно перестал, так что упускаю новинки…
Ага, вот я и спрашивал про цену. А он с Ethernet или только USB? За десятку — отлично, и суперски.
А что касается 203 dpi — так у меня с 2016го всё на 203 dpi. Я тебе ща на мыло кину фотки примеров бирок, и они в 203 Dpi отлично печатаются. ИМХО 203 dpi для всего хватает.
Тогда листай блог с начала! Там уже один пост про светильники NLCO обновился и три новых вышло! Ещё выйдут в следующий Вторник и, если успею написать, в следующую Пятницу.
Попробую ваговскую программу, она, наверное, под нашу маркировку лучше заточена, чем универсальная.
Элегировские этикетки, интересно, совпадают с какими-нибудь ваговскими? Вряд ли они их сами изобретали, да и типичные они (ну разве что вставки в держатели чуток замысловатые).
В ВАГовской удобно копипастить из Экселя и делать готовые «ленты» из шаблонов.
В посте про WAGOвскую софтину было сказано то, как сделать свои шаблоны.
А с чего это Элегир обязан совпадать с WAGO? Неа, ничего не совпадает.
Не обязан, естественно. Я предполагал, что они свою маркировку делали с оглядкой на wago и других дорогущих производителей, как более доступную альтернативу. Проще говоря, скопировали некоторую часть просто.
Ну свои так свои. В принципе, без разницы, с ваговской я же не работал, все равно с нуля.
Щаз! Это ж русская компания, которая не исследует рынок, видимо… я был был бы очень рад, чтобы сделали аналоги WAGO. И я даже написал про это в посте.
«Шо мы, китаезы какие-нибудь, штоле?!»
Лично я тоже был бы за ту маркировку, что ты от них просишь. И вряд ли делать её как-то особенно невозможно технологически. Может, сделают…