26.06.2012 17:06
KirillHome
 
Зачастую стоит задача - "напечатать штрихкод" (и именно в виде штрихкода - в виде "полосок").
Каким образом её можно решить без установки дополнительного ПО (проверено на платформе 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
Согласно формата, ставим правый ограничитель "восклицательный знак" !.
26.06.2012 22:07
KirillHome
 
Новое - как всегда хорошо забытое старое.
В первый раз не нашёл, а здесь уже был указан программный код для перекодировки под EAN13
05.08.2013 18:19
konst
 
под руку попалась подборка шрифтов для печати ШК
https://storage.olegon.ru/supermag/upload/bar-code.zip
Часовой пояс GMT +3, время: 16:34.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.