Зачастую стоит задача - "напечатать штрихкод" (и именно в виде штрихкода - в виде "полосок").
Каким образом её можно решить без установки дополнительного ПО (проверено на платформе Windows)?
Самый (на мой взгляд) простой способ - это установка дополнительного (дополнительных) шрифтов.
Самое простое - это установить штрифт для т.н. Code39.
К примеру - C39P60DhTt или C39HrP60DhTt.
Отличия между этими шрифтами в том, что первый печатает только "полоски", а второй, помимо "полосок", печатает (снизу) и расшифровку - т.е. то, что закодировано.
Для того, что бы штрихкод прочитался сканером - необходимо добавить перед и после штрихкода символ "звёздочка", напечатанный тем же шрифтом.
Code 39, помимо цифр, так же позволяет печатать и буквы (честно говоря, не помню - как там дело обстоит с регистрами).
Количество кодируемых символов - не важно.
Т.е. для того, что бы сканер прочитал штрихкод
4034229003692 мы должны напечатать выбранным шрифтом
*4034229003692*
А что же делать, если надо напечатать именно в формате EAN-13 (да, предыдущим методом мы так же можем напечатать код, который будет похож на EAN-13, но - при считывании устройством с возможностью определения типа штрихкода - нам скажут, что на самом деле мы считали Code39)?
Для этого так же можно использовать шрифт - к примеру, eanbwrp36tt.
Будем считать, что у нас есть правильная последовательность из 13 символов, которые мы хотим использовать для печать штрихкода типа EAN-13.
К сожалению, нельзя просто использовать данный шрифт без таблиц перекодировки.
Первая таблица - показывает, как должный кодироваться левая часть и правая часть в зависимости от первого символа в штрихкоде
Код:
Кодировка Кодировка
левой части правой части
0 LLLLLL RRRRRR
1 LLGLGG RRRRRR
2 LLGGLG RRRRRR
3 LLGGGL RRRRRR
4 LGLLGG RRRRRR
5 LGGLLG RRRRRR
6 LGGGLL RRRRRR
7 LGLGLG RRRRRR
8 LGLGGL RRRRRR
9 LGGLGL RRRRRR
Вторая таблица показывает, какой, собственно, символ мы должны использовать для представления текущей цифры
Код:
Первый символ
L G R
0 # 0 A a
1 $ 1 B b
2 % 2 C c
3 & 3 D d
4 ' 4 E e
5 ( 5 F f
6 ) 6 G g
7 * 7 H h
8 + 8 I i
9 , 9 J j
Шрихкод мы должны дополнить левым и правым ограничителем и разделителем посередине.
Левый и правый ограничитель - символ "восклицательный знак"
!
Разделитель в середине - символ "минус"
-
Общий формат шрихкода для печати выглядит так:
X!YYYYYY-ZZZZZZ!
где X первый символ штрихкода (печатается информативно, просто цифрой)
! левый ограничитель
YYYYYY символы со 2-го по 7-й
- разделитель в середине
ZZZZZZ - символы со 8-го по 13-й
! правый ограничитель
Т.е. для того, что бы сканер прочитал штрихкод
4034229003692 мы должны напечатать выбранным шрифтом
'!0D42CJ-aadgjc!
Расшифровка:
первый символ 4, следовательно печатаем
' (вторая таблица, столбец - первый символ)
Согласно формата, ставим левый ограничитель "восклицательный знак"
!
т.к. первый символ 4, то кодировка левой части (034229) должна быть
LGLLGG (первая таблица, столбец - кодировка первой части)
Подставляем последовательно из второй таблицы из столбца L или G нужные значения:
0 (L) равно 0
3 (G) равно D
4 (L) равно 4
2 (L) равно 2
2 (G) равно C
9 (G) равно J
Согласно формата, ставим разделитель "знак минус"
-
Правая часть (003692) всегда кодируется по столбу R из второй таблицы
0 (R) равно a
0 (R) равно a
3 (R) равно d
6 (R) равно g
9 (R) равно j
2 (R) равно c
Согласно формата, ставим правый ограничитель "восклицательный знак"
!.