Генератор штрих-кодов zint


Установка ПО

zint – один из самых лучших генераторов штрих-кодов. На момент написания статьи этот генератор поддерживал более 80-ми форматов. Устанавливается просто (пример для ArchLinux):

[orca@blizzard ~]$ cd /store/Install/AUR/
[orca@blizzard AUR]$ curl https://aur.archlinux.org/packages/zi/zint/zint.tar.gz -o "zint.tar.gz"
[orca@blizzard AUR]$ tar -xvzf ./zint.tar.gz
[orca@blizzard AUR]$ cd ./zint
[orca@blizzard zint]$ makepkg -s
[orca@blizzard zint]$ sudo pacman -U zint-2.4.3-1-x86_64.pkg.tar.xz
[orca@blizzard zint]$ which zint
[orca@blizzard zint]$ zint -t
[orca@blizzard zint]$ zint -b 58 --scale=6 --border=2 -o /store/myCode.svg -d "This is sample"

Результат – файл SVG (Scalable Vector Graphics) с изображением штрих-кода “QR Code” текста “This is sample”.


Вариант применения

Ленточные библиотеки производства HP, как правило, оборудованы роботом со встроенным сканером штрих-кодов. Наклейки с кодами для кассет заказываются отдельно, и зачастую про них просто забывают. Но такая, казалось бы, мелочь может значительно упростить процесс управления кассетами в библиотеке.

Итак. Ставится задача смастерить комплект наклеек для кассет под ленточную библиотеку HP. Для этого необходимо:

  1. Генератор штрих-кодов “Code 39” (zint)
  2. Список правил маркировки кассет HP
  3. Редактор векторной графики
  4. Комплект наклеек и принтер (монохромный или цветной)

Правила маркировки:

  1. Метка кассеты должна содержать строго 8 символов
  2. В качестве символов допускаются только прописные (заглавные) латинские буквы и цифры
  3. Последние два символа – тип носителя (см. ниже)
  4. Остальные символы – идентификатор кассеты
  5. Исключение составляют чистящие кассеты. Формат метки у них такой: “CLNvnnL1”, где “v” – это буква-идентификатор привода (H = HP), а “nn” – любая удобная последовательность (A0, 01, C2 и т.п.)
Таблица 1. Типы носителя
Тип Метка
1
LTO-1 Data Tape
L1
2
LTO-2 Data Tape
L2
3
LTO-3 Data Tape
L3
4
LTO-4 Data Tape
L4
5
LTO-5 Data Tape
L5
6
LTO-6 Data Tape
L6
7
LTO-7 Data Tape
L7
8
LTO-8 Data Tape
L8
9
LTO-9 Data Tape
L9
10
LTO-1 WORM Tape
LR
11
LTO-2 WORM Tape
LS
12
LTO-3 WORM Tape
LT
13
LTO-4 WORM Tape
LU
14
LTO-5 WORM Tape
LV
15
LTO-6 WORM Tape
LW
16
LTO-7 WORM Tape
LX
17
LTO-8 WORM Tape
LY
18
LTO-9 WORM Tape
LZ
Замечание На данный момент актуальны кассеты с 1-го по 6-ое поколение и, строго говоря, технология WORM (Write Once Ready Many) появилась только на LTO-3. Так что часть меток из приведённой таблицы либо не будет никогда использоваться, либо будет, но только в обозримом будущем

Пример правильных меток:

CLNH01L1        <1>
CLNH02L1        <1>
HQA001L5        <2>
HQA002L5        <2>
...
HQB001L5        <3>
...
BOA001L5        <4>
BOA002L5        <4>
...
  1. Чистящие кассеты. Простое обозначение: “H” – производитель привода (HP); “01, 02” – порядковые номера
  2. Кассеты для хранения данных. Сложное обозначение: “HQ” – Нeadquarters (штаб-квартира, главный офис); “А” – Ленточная библиотека “A”; “001, 002” – порядковые номера
  3. Кассеты для хранения данных. Сложное обозначение: “HQ” – Нeadquarters (штаб-квартира, главный офис); “B” – Ленточная библиотека “B”; “001” – порядковый номер
  4. Кассеты для хранения данных. Сложное обозначение: “BO” – Branch Office (дочерняя контора); “А” – Ленточная библиотека “A”; “001, 002” – порядковые номера

Сценарий для генерации меток:

#!/usr/bin/bash
OUTPUTDIR=/store

for j in {'HQA','HQB','BOA'};
 do
  for i in {1..40};
   do myLabel=$(printf "$j%0.3dL5" $i);
    printf "Генерирую $myLabel...";
    /usr/bin/zint -b 8 --scale=3 --height 20 --notext -o $OUTPUTDIR/$myLabel.svg -d "$myLabel";
    printf " готово\n";
   done
done

Далее, открыть подходящий редактор векторной графики, разлиновать лист согласно размерам кассеты, вставить картинки со штрих-кодами, добавить символические метки и распечатать. Аккуратно вырезать и приклеить наклейки на кассеты.

Подсказка Замечено, что HP в своих наборах меток для кассет переворачивает штрих код на 180 градусов

И, в любом случае, перед печатью начисто, рекомендуется поэкспериментировать на одной-двух кассетах