gLabels. Часть 1. Создаем макет этикетки.


По работе пришлось столкнуться с задачей печати этикеток. В качестве универсального решения сейчас используется BarTender. Данное решение удобно наличием всего необходимого для создания и печати всевозможных этикеток, тонкой настройки параметров получаемой этикетки, включая разрешение штрих кодов, предоставляет API для динамической генерации этикетки из шаблона (по сети передаются данные, которые обрабатываются и выводятся на принтер).
Несмотря на свои преимущества обладает своими недостатками:
  1. Цена. За BarTender просят денег и не маленьких
  2. API достаточно глючное, работает не всегда стабильно (использовалась передачу XML файла по сокету)
Захотелось поискать свободный аналог. Поиск выдал для Linux не так уж и мало программ, но свободных решений не очень много:
  • barcode - консольное приложение позволяющее сгенерировать всевозможные штрих коды. Список одномерных кодов большой, из двумерных поддерживается только DataMatrix.
  • gLabels - программа предназначенная для создания и печати всевозможных этикеток для GNOME.
  • KBarcode - аналогичная программа для KDE.
barcode как самостоятельное приложение не интересен, поскольку способен генерировать только штрихкоды и ничего более. Тем не менее именно его используют gLabel и KBarcode для генерации штрихкодов на этикетках.
Из оставшихся решений я решил исследовать gLabels, так как использую GNOME и KBarcode потребовал бы выкачать добрую половину библиотек KDE. В обзоре использовалась последняя стабильная версия 2.2.8.


Установка и запуск

В репозитории Ubuntu присутствует последняя стабильная версия, поэтому установка происходит быстро и без проблем:
sudo apt-get install glabels
При запуске отображается основная рабочая область. Но пока не выбрана какая либо этикетка или не началось работа над новой, все элементы управления неактивны.
Пока не загружено ни одной этикетки
Для примера, чтобы не придумывать некоторую абстрактную этикетку воспользуемся следующим образцом:

Приступаем к созданию. Выбираем шаблон.

Прежде всего необходимо выбрать формат этикеток (шаблон в терминологии программы). С gLabels идет очень много предустановленных шаблонов, которые разбиты на группы по компаниям. Насколько я понял форматы определяются по поддержке печати этикеток специализированными принтерами, которые эти компании и производят.
В текущей версии имеется возможность создать свой формат. Он доступен через меню Файл->Дизайнер Шаблонов. Дизайнер представляет собой последовательность форм, заполнив которые, мы полностью определим формат этикетки.
  1. Указываем компанию, и название этикетки
  2. Указываем формат страницы на которой мы планируем печатать. Программа предлагает основные форматы: A0-A10, B0-B10, US Letter, можно задать и свой размер бумаги. В нашем случае ограничимся стандартной страницей A4
  3. Выбираем формат этикетки. На данный момент поддерживаются 3 формата: прямоугольные, круглые, на CD/DVD (включая CD-визитки). Наш выбор - стандартная прямоугольная
  4. Указываем все необходимые размеры для этикеток. На данном этапе нужно указать достаточно много параметров, но программа предлагает в помощь очень удобную подсказку с пометками за что отвечает каждый параметр
  5. Выбор параметров расположения этикеток на странице. Указываем максимальное количество этикеток на одну страницу
Вот и создали свой шаблон. Проиллюстрирую описанные шаги.
1
2
3
4
У текущей стабильной версии есть одна неприятная особенность. Шаблоны можно только создавать, функция редактирования не реализована. В текущей версии отредактировать уже созданный шаблон можно только поправив xml файл, который находится в папке ~/.glabels. Реализация возможности нормально редактировать запланирована автором в следующей стабильной версии 3.0 и уже доступна в нестабильной ветке.

Дизайн

Теперь после создания своего шаблона для этикеток или успешного выбора из предустановленных вариантов можно приступить к дизайну этикеток.
Выбираем в меню файл создание новой этикетки. Открывается область редактирования соответствующая размерам указанным в выбранном шаблоне.
В дизайнере доступны 5 инструментов:
  • Текстовое поле
  • Прямоугольник
  • Эллипс
  • Линия
  • Изображение
  • Штрих код
У каждого элемента есть свой набор свойств для редактирования. Он не очень разнообразен, но его вполне хватает для стандартных задач.
  • Для текстовых элементов доступны базовые стилевые элементы, такие как выбор шрифта, установка текста жирным или курсивым, выравнивание.
  • Для фигур можно задать толщину линий, выбрать цвет заливки.
  • При редактировании имеется возможность выравнивать элементы по центру или краям как по горизонтали так и по вертикали. Большим недостатком данной версии является отсутствие возможности откатить выполняемые действия. 
Из недостатков работы с текстовыми полями можно отметить отсутствие режима принудительной одной строки. Такой режим просто отсекает весь текст не поместившийся в заданную область. Здесь же текст просто переносится на новую строку и в случае необходимости вылезает за её границы.
Совсем немного вылезли за границы

Со штрих кодами дело обстоит неплохо. Доступно большое количество одномерных штрих кодов, полный список можно посмотреть на сайте программы barcode. QR Code планируется добавить в следующей версии gLabels, отдельно от barcode.
Единственным большим недостатком (или особенностью использования библиотеки barcode, не могу точно сказать) я считаю изменение размера при изменении количества букв в штрих коде. При штрих коде длиной в 2 символа и в 10 символов размер подписи под штрих кодом сильно меняется. Неплохо, если бы была возможность сделать его постоянным. Я связывался с автором по поводу этой проблемы, он сказал что пока единственный способ обойти данную проблему - убрать из штрих кода подпись и печатать её отдельным текстовым полем. Нормального решения насколько я понял не предвидится, с его точки зрения в основном требуется печатать коды одинаковой длинны, поэтому проблема несущественная. Он ещё упоминал что если оставить размеры штрих кодов по умолчанию, то они будут масштабироваться в данной области в зависимости от длины штрих кода, но добиться такого поведения у меня не удалось.

Подпись под штрих кодом здесь явно приоритетнее
Других проблем найдено не было.

Вот что в итоге получилось:

5 комментариев:

  1. Уважаемый, Павлов Дмитрий, с удовольствием рассмотрели бы размещение ссылки на наш сайт www.code-label.ru. ООО Радонд является специалистом в области этикетирования и является производителем и поставщиком этикеток и риббонов.
    Мы проводим бесплатные консультации. inet@code-label.ru. Обращайтесь.

    ОтветитьУдалить
  2. Спасибо, но пока данное предложение для меня не интересно.

    ОтветитьУдалить
  3. Интересная программа, а есть ли возможность использовать libreoffice calc как источник данных? Где-то встречал упоминание об этом, но сам разобратся не могу.

    ОтветитьУдалить
    Ответы
    1. Насчет ODS не уверен, но CSV файл точно можно использовать.

      Удалить