Сложно представить нашу жизнь без штрих-кодов особенно сейчас, когда мы их встречаем на каждом шагу. Идём в кинотеатр и ваш билет будет содержать этот “чёрно-белый рисунок из линий”, заходим в супермаркет и на каждом товаре будет информация о нём в виде штрих-кода. Можно сейчас только вообразить какие бы были очереди, если бы кассир вводил идентификаторы товаров вручную, а не с помощью сканера. К тому же, велик риск ошибиться при вводе последовательности цифр. Сегодня же мы рассмотрим малую часть из всевозможных баркодов.
ITF (Interleaved Two of Five) или же штрих-код “2 из 5 чередующихся” - это двухполосный числовой код, по-другому код высокой плотности, который может кодировать только пары чисел (штрих-код должен иметь чётное число цифр!). Каждый такой штрих-код кодирует нечётную цифру темной линией и чётную цифру - пробелом между ними. Чтобы закодировать нечётное число цифр, вы должны дополнить самую левую (старшую) цифру нулем.
Штрих-коды могут иметь переменную длину и обычно не используют контрольную сумму, хотя в некоторых ситуациях используется символ проверки по модулю 10. Частичное сканирование возможно, так как штрих-код 2 из 5 чередующихся не является самопроверяемым, а поля данных фиксированной длины часто используются для обхода этой проблемы.
Если коротко, то:
- Можно кодировать только числа;
- Длина переменная, но должна иметь четное число цифр;
- Контрольная сумма не обязательна.
Поскольку ITF является штрих-кодом с очень высокой плотностью данных, то он имеет следующие свойства:
Сравнив длину кода на двоичном уровне с CODE 39 и Codabar, можно заметить особенность ITF, а именно его очевидно маленькую длину.
Хоть у ITF есть много преимуществ, он также имеет недостаток, заключающийся в возможном «пропуске чтения» из-за его структуры. Пропуск считывания означает, что
штрих-код, представляющий «3852», может неправильно считаться как «38» с пропуском некоторых цифр.
Как ITF-14, так и GTIN-14 создаются с использованием штрих-кода 2 из 5 с чередованием. Этот штрих-код используется на транспортных контейнерах и основан на коде UPC. Обычно interleaved печатают на гофрокартонных коробках, в которых содержатся товары для доставки и имеет он вот такую структуру:
Industrial был разработан Identicon Corp. и Computer Identics Corp. в 1970 году и активно использовался в промышленных приложениях, однако в настоящее время он не используется (за исключением некоторых приложений логистики). Индустриальный «2 из 5» имеет следующий вид и использует 5 полос для представления одного знака. Поскольку этот код назначает данные только столбцам, а не пробелам, то он имеет очень низкую плотность данных.
Matrix 2 из 5 является более плотным членом семейства символов кода 2 из 5, который был впервые разработан в 1968 году. В основном его использовали для сортировки на складе и для фото отделки. Имя "2 из 5" происходит от того, что из пяти элементов (баров и пробелов), которые используются для кодирования каждого символа, два являются широкими, а три-узкими.
FastReport VCL позволяет использовать все три рассмотренных типа штрих-кода. Посмотрим, как их использовать.
В дизайнере FastReport VCL добавляем на отчёт компонент obCatBarcode и выбираем тип из предложенного списка:
Далее мы переходим в редактор штрих-кода:
Code - область для написания числового значения штрих-кода;
Type of Bar - тип штрих-кода можно изменить сразу в редакторе не добавляя на отчёт новый компонент obCatBarcode;
CalcCheckSum- это контрольная сумма. Это свойство имеется у всех линейных штрих-кодов. Помните про “пропуск считывания”? С этим надо как-то бороться! Свойство определяет, надо ли считать контрольную сумму автоматически. Если оно отключено, контрольная сумма должна присутствовать в тексте объекта.
Zoom - задает масштабирование штрих-кода и используется только вместе со свойством "Авторазмер";
Text - это текст под штрих-кодом.
Rotation - позволяет задать поворот объекта на один из фиксированных углов – 0, 90, 180, 270 градусов.
Проверяем корректность сгенерированного штрих-кода (благо фотоаппарат и программа для сканирования штрихкодов сейчас доступны во всех современных смартфонах).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
uses frxBarcod; procedure TForm1.Button1Click(Sender: TObject); var bc: TfrxBarcodeView; begin bc := TfrxBarcodeView(frxReport1.FindObject('BarCode1')); {Устанавливаем тип штрихкода} bc.BarType := bcCode_2_5_interleaved; {Устанавливаем фиксированное значение штрихкода} bc.Text := '123456'; {Устанавливаем вычисляемое значение штрихкода} //bc.Expression := '<YourDatasetName."FieldName1"> + <YourDatasetName."FieldName2">'; {Устанавливаем, нужно ли подсчитывать контрольную сумму и добавлять её в конец штрихкода} bc.CalcCheckSum := False; {Устанавливаем масштаб, в котором будет отображаться штрихкод} bc.Zoom := 2; {Устанавливаем угол поворота штрихкода. Может принимать значения 0, 90, 180, 270} bc.Rotation := 0; {Устанавливаем, нужно ли устанавливать ширину штрихкода в зависимости от его содержимого.} {При значении False Zoom будет принимать такое значение, чтобы ширина штрихкода оставалась фиксированной} bc.AutoSize := True; {Устанавливаем цвет фона штрихкода} bc.Color := clNone; {Устанавливаем цвет линий штрихкода} bc.ColorBar := clBlack; {Устанавливаем, нужно ли отображать текcт внизу штрихкода} bc.ShowText := True; frxReport1.ShowReport(); end; |
Теперь мы знаем немного больше о ITF штрих-кодах и можем использовать их для своих отчётов-этикеток-ценников и вообще всего.