Штрих-код PDF417 был разработан фирмой Symbol Technologies в 1991 году. Название штрих-кода состоит из двух частей. PDF происходит от сокращения Portable Data File (Портативный Файл Данных). Номер 417 происходит из структуры штрих-кода: каждый штрих-кодовый символ состоит из 17 модулей, каждый из которых содержит 4 штриха и 1 пробел.

 

PDF417 представляет собой символику двухмерного штрих-кода высокой плотности, которая состоит из набора более мелких штрих-кодов. В этом штрих-коде могут быть закодированы одновременно любые символы из набора ASCII. Допустимая длина данных зависит от режима кодирования данных и может достигать примерно 1100 байт, или 1800 символов текста, или 2600 цифр (хотя на практике многие сканеры не считывают более тысячи символов). Благодаря большой длине данных всю необходимую информацию можно хранить прямо в штрих-коде, поэтому его и называют "Портативным Файлом Данных".

 

Штрих-код содержит от 3 до 90 строк каждый из которых похож на небольшой линейный штрих-код. В каждой строке есть:

strel11 Полное место;

strel11 Начальный шаблон, который идентифицирует тип символа как PDF417;

strel11 Кодовое слово "строка слева", содержащее информацию о строке;

strel11 Кодовое слово "строка справа" с дополнительной информацией о строке;

strel11 Шаблон остановки.

 

 

Строка состоит из элементарных штрих-кодовых символов - паттернов (pattern). Каждая строка содержит 4 служебных паттерна (2 слева и 2 справа) и паттерны данных (от 1 до 30). Каждый паттерн состоит из 4 штрихов и 4 пробелов, общей шириной 17 модулей. Паттерн может принимать значения от 0 до 928, которые в спецификации называются "кодовые слова" (codeword).

 

Штрих-код может иметь любое количество строк и колонок (паттернов данных в строке) в указанных пределах, с одним условием: общее количество паттернов данных не должно быть больше 928. Количество строк и колонок можно установить с помощью свойств "DataRows" и "DataColumns" соответственно. Если свойства "AutoDataRows" и "AutoDataColumns" установлены в false, то размер штрих-кода будет фиксированным. Если одно из этих свойств установлено в true, то размер штрих-кода может расти или уменьшаться в этом направлении в зависимости от количества данных. Если оба свойства установлены в true, то размер штрих-кода в обоих направлениях подбирается автоматически, с учетом параметров "AspectRatio" (отношение ширины штрих-кода к высоте) и "RatioY" (высота кодового слова в модулях, от 2 до 5).

 

В зависимости от типа кодируемой информации можно выбрать один из трех режимов кодирования данных. Каждый режим позволяет кодировать свой набор символов и имеет свою степенью сжатия.

 

Режим кодирования

Допустимые символы

Сжатие

Byte

ASCII  0 to 255

1,2 байта на слово

Text

ASCII  9,10,13 & 32-127

2 символа на слово

Numeric

0123456789

2,9 цифры на слово

 

 

Штрих-код содержит коды коррекции ошибки: даже если штрих-код частично поврежден, он все равно может быть считан. В спецификации определено 9 уровней коррекции ошибки от 0 (низкий) до 8 (высокий).  Зависимость количества кодовых слов от уровня приведена в таблице.

 

Уровень коррекции ошибки

Количество кодовых слов

0

2

1

4

2

8

3

16

4

32

5

64

6

128

7

256

8

512

 

 

Чем выше уровень коррекции ошибки, тем больше кодов коррекции добавляется в штрих-код. Количество кодов коррекции не зависит от количества данных. Поэтому, при малом количестве данных не рекомендуется устанавливать большие уровни коррекции ошибки (количество кодов коррекции будет в десятки раз больше количества данных, т.е. слишком избыточно). Для задания уровня используется свойство "ErrorsCorrectionLevel". Это свойство можно установить в "Auto", в этом случае уровень будет устанавливаться автоматически в зависимости от количества данных.

 

 

Штрих-код "PDF417". Строка данных "1234567890ABCDEF"