Создаём штрих-код Code-128 (A, B, C) в своём приложении

22.12.2021

Code-128

CODE 128 - штрих-код, разработанный Computer Identics Corporation (США) в 1981 году. Штрих-код CODE 128 может представлять все 128 символов кода ASCII (числа, верхний регистр / нижний регистр, регистр букв, символов и управляющих кодов). Поскольку он может представлять все символы (кроме Японских кандзи, хирагана и катакана), с которыми можно работать с компьютерной клавиатурой, это компьютерный штрих-код. Code-128 может становиться очень компактным за счёт «двойной упаковки» данных, когда в один модуль штрих-кода записываются два числа.

Штриховой код Code-128 включает в себя 107 символов. Из которых 103 символа данных, 3 стартовых, и 1 остановочный (стоп) символ. Для кодирования всех 128-ми символов ASCII предусмотрено три комплекта символов штрихового кода Code128 - A, B и C, которые могут использоваться внутри одного штрих-кода.

  • 128 A — символы в формате ASCII от 00 до 95 (цифры от «0» до «9», буквы от «A» до «Z») и специальные символы;
  • 128 B — символы в формате ASCII от 32 до 127 (цифры от «0» до «9», буквы от «A» до «Z» и от «a» до «z»), а также специальные символы;
  • 128 C — символы в формате ASCII от 00 до 99 (только для числового кода).

Технические требования к символике штрихового кода Code-128, показатели символики, кодирование знаков данных, размеры, алгоритмы декодирования, параметры применения, строки-префиксы и идентификатора символики в России регламентируются ГОСТ 15417-2013 «Технологии автоматической идентификации и сбора данных. Спецификация символики штрихового кода Code 128».

Базовый состав выглядит следующим образом:

1) Начальный код
2) Контрольная цифра (модуль 103)
3) Код остановки

Базовый состав Code 128

Структура Code-128

Структура штрих-кода Code128 достаточно проста. Штрих-код состоит из 6 зон:

- Белое поле;
- Стартовый символ (Start);
- Кодированная информация;
- Проверочный символ (контрольный знак);
- Остановочный (Stop) символ;
- Белое поле.

Символы штрихового кода Code-128 состоят из 3 штрихов и 3 промежутков (всего 6 элементов). Штрихи и промежутки имеют модульное построение с шириной от 1 до 4 модулей (1 модуль = 0,33 мм). Ширина знака равна 11 модулям. Остановочный (стоп) знак состоит из тринадцати модулей и имеет 4 штриха и 3 промежутка.

Кстати, в этом штрих-коде «Модуль 103» (Modulus 103) используется как контрольная цифра. Согласно таблице символов штрих-кода Code-128, каждому знаку присваивается соответствующие значение. Затем, для каждого знака, кроме знака «Stop» и контрольного знака, назначается весовой коэффициент, 1, 2, 3,…,n. При этом, знакам «Start» и следующему за ним первому знаку, присваивается весовой коэффициент равный единице. Контрольная цифра вычисляется как сумма произведений весовых коэффициентов на соответствующие значения по модулю 103. Располагается контрольный знак между последним знаком данных и знаком «Stop».

Code-128 может изменить тип кодирования в одном штрих-коде. На следующем рисунке показан переход с Code-C на Code-A.

1] Начать с CODE-C
2] Изменить на CODE-A

Переход с Code-C на Code-A

При использовании CODE-C двузначные числа могут быть представлены одним типом штрихового рисунка, так называемая «двойная упаковка» данных. Это позволяет увеличить плотность данных. На примере выше как раз представлен этот случай.

Если данные штрих-кода содержат 12 или более цифр, CODE 128 обеспечивает меньший размер, чем ITF и EAN-128.

Сравнение разных штрих-кодов

Поскольку CODE 128 использует 4 типа размера полосок, требуются принтеры с высоким качеством печати. Code 128 не подходит для печати на матричных и струйных принтерах, а также для флексопечати на гофрокартоне.

Области применения

CODE 128 используется в следующих отраслях:

- Швейная промышленность США.
- Пищевая промышленность США.
- Производство лекарств и медицинского оборудования США.
- Пищевая промышленность Австралии и Новой Зеландии.
- Европейская промышленность по производству лекарств и медицинских инструментов.

 

Единичная упаковка Транспортная упаковка Логистическая упаковка
Бутылка черничного сока, 3 л., бутылка стекло 6 шт., коробка картонная 24 шт., палет
 EAN-13  ITF-14  Code-128
 EAN-13  ITF-14  Code-128
 4611234567893  14611234567899  (02)14611234567890(37)24
 Штрих-код EAN-13  Штрих-код ITF-14  Штрих-код Code-128
461 внутри каждого штрих-кода называется региональным кодом национальных организаций GS1(например, 460-469 Россия) (000-139 США) 1 (в самом начале) - это индикатор обозначающий уровень упаковки для конкретной картонной коробки. Этот однозначный префикс может варьироваться от 0 до 8. (например, 1 — коробка, 2 — ящик и т.д.).

(02) - GTIN торговых единиц, содержащихся в грузе
(37) - количество торговых единиц в грузе
24 (в конце) – количество штук в палете

Создание штрих-кода из кода в FastReport VCL

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
uses frxClass, frxBarcode, frxBarcod, frxDBSet, Printers;
 
 var
 DataPage: TfrxDataPage;
 Page: TfrxReportPage;
 Band: TfrxBand;
 Barcode: TfrxBarcodeView;
begin
 { Очищаем отчет }
 frxReport1.Clear;
 { Добавляем страницу "Данные" }
 DataPage := TfrxDataPage.Create(frxReport1);
 { Добавляем страницу }
 Page := TfrxReportPage.Create(frxReport1);
 { Создаем уникальное имя }
 Page.CreateUniqueName;
 { Устанавливаем размеры полей, бумаги и ориентацию по умолчанию }
 Page.SetDefaults;
 { Меняем ориентацию бумаги }
 Page.Orientation := poLandscape;
 { Добавляем report title }
 Band := TfrxReportTitle.Create(Page);
 Band.CreateUniqueName;
 { Для бэнда достаточно установить координату Top и высоту }
 { Обе координаты - в пикселах }
 Band.Top := 20;
 Band.Height := 40;
 { Создаем объект штрих-кода }
 Barcode := TfrxBarcodeView.Create(Band);
 { Задаем тип штрих-кода }
 Barcode.BarType := bcGS1Code128;
 { Задаем числовую комбинацию для кодирования }
 Barcode.Text := '(02)14611234567890(37)24';
 { Устанавливаем положение и размеры объекта }
 Barcode.Top := 0;
 Barcode.Left := 10;
 Barcode.Height := 40;
 { Устанавливаем отображение текста внизу штрихкода }
 Barcode.ShowText := True;
 { Отображаем отчет }
 frxReport1.ShowReport;
end;

Создание штрих-кода из кода в FastReport .NET

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
 //Создаем объект отчета
 Report report = new Report();
 //Создаем страницу отчета
 ReportPage page = new ReportPage();
 //добавляем уникальный идентификатор
 page.CreateUniqueName();
 //Добавляем ее в коллекцию страниц отчета
 report.Pages.Add(page);
 //Создаем бэнд данные
 DataBand dataBand = new DataBand();
 //с уникальным идентификатором
 dataBand.CreateUniqueName();
 //и добавляем его в коллекцию бэндов
 page.Bands.Add(dataBand);
 //Создаем объект штрих-кода
 FastReport.Barcode.BarcodeObject barcode = new FastReport.Barcode.BarcodeObject();
 //Задаем тип штрих-кода
 barcode.Barcode = new FastReport.Barcode.Barcode128();
 //Задаем числовую комбинацию для кодирования
 barcode.Text = "(02)14611234567890(37)24";
 //Размещаем штрих-код на странице
 barcode.Parent = dataBand;
 //Устанавливаем размеры объекта
 barcode.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 3);
 //Отображаем отчет
 report.Show();

Теперь вы немного больше знаете о штрих-коде Code-128 и его разновидностях A, B, C. 

20 ноября 2024

Локализация и смена языков в FastReport VCL

FastReport VCL поддерживает 40 языков для локализации интерфейса и позволяет изменять язык на лету через меню или код, без перекомпиляции.
1 ноября 2024

Новые возможности редактора отчетов FastReport VCL

Рассматриваем новые возможности редактора отчетов: выносные линии, подсветка пересекающихся объектов, обновлённые деревья отчетов и данных.
30 октября 2024

Использование стилей при создании отчетов в FastReport VCL

В статье подробно рассматривается одна из новых возможностей FastReport VCL – применение стилей и страниц стилей.