INTRODUCTION

PDF417 is a 2-dimensional stacked bar code created by Symbol Technologies in 1991. It is one of the most popular 2D codes because of its ability to be read with slightly modified handheld laser or linear CCD scanners. PDF stands for Portable Data File and 417 represents the 17 modules of 4 bars and spaces that make up each code. Each symbol also has start and stop bar groups that allow the code to be easily identified.

TECHNICAL DATA / FEATURES


Encodable Character Set All 128 ASCII Characters (including extended)
Code Type Continuous, Multi-Row
Symbol Height 3 - 90 Rows
Symbol Width 90X - 583X
Bidirectional Decoding Yes
Error Correction Characters 2 - 512
Maximum Data Characters 1850 text
2710 digits
1108 bytes

ENCODING

Symbol Structure

All PDF417 barcode symbols are made up of stacks of vertically aligned rows. Each code can contain anywhere from 3 to 90 rows and that will each contain the following components:

1. Leading quiet zone
2. Start pattern
3. Left row indicator symbol character
4. 1 - 30 data symbol characters
5. Right row indicator symbol character
6. Stop pattern
7. Trailing quiet zone

PDF417 Symbol Structure
Omniplanar Logo The easily identifiable Start and Stop patterns on the PDF417 bar code make it one of the easiest 2D bar codes to identify in an image. These patterns along with the stacked format of the bar code is also what enables the PDF417 to be decoded by linear imaging scanners and even some laser bar code scanners. These factors along with its large data capacity contribute is what makes the PDF417 one of the most popular 2D bar codes in the world.

Character Encodation

Each PDF417 symbol character is 17 modules long. As shown below each character is made up of a series of four bars and four spaces of varying lengths. This character structure allows 929 different symbol character values (0 - 928) to be encoded.
PDF417 Symbol Character Detail

Each of these characters is referred to as a cluster. There is a formula using the length of each black bar in each cluster that yields a value of either 0,3 or 6 for every PDF417 character cluster.
When data is encoded, each row uses the symbol characters from only one cluster. The same cluster value repeats every third row so that Row 1 uses cluster 0, Row 2 uses cluster 3, Row 3 uses cluster 6, Row 4 uses cluster 0 and so on...
Omniplanar Logo Using different cluster values on adjacent rows facilitates decoding with linear scanning devices whose scan line might cross multiple rows simultaneously.
The data region of each row is surrounded by Left and Right Row Indicators which provide the following information for each row:
  • row number
  • number of rows (3 - 90)
  • number of columns in the data region (1 - 30)
  • error correction level (0 - 8)

Data Compaction Modes

The PDF417 bar code has three data compaction modes that allow data to be more efficiently packed into each code. The three modes of data compaction are:
  1. Text Compaction (TC) mode
  2. Byte Compaction (BC) mode
  3. Numeric Compaction (NC) mode
These modes can either be used by themselves in a code or intermixed within one symbol.


Text Compaction Mode contains four sub-modes:
  • Alpha (capital letters)
  • Lower Case (lower case letters)
  • Mixed (numbers and some symbols)
  • Punctuation (punctuation and some symbols)
This structure allows a value of 0-29 to be assigned to frequently occuring characters. This increases the efficiency of the data compaction by allowing two characters to be encoded in a single symbol character.


Byte Compaction Mode converts a sequence of bytes into codewords through a base 256 to base 900 conversion. This compaction allows 6 bytes of data to be encoded in 5 PDF417 codewords.


Numeric Compaction Mode is normally used when there are more than 13 consecutive digits in a row and utilizes a base 10 to base 900 data conversion. This allows 2.93 digits to be encoded into a single PDF417 symbol character.

Start and Stop Patterns

PDF417 codes have unique start and stop patterns. Both patterns are bar-space sequences defined below:
Start Pattern = 81111113 (ending with a space)
Stop Pattern = 711311121 (ending with a bar)

Quiet Zones

A PDF417 requires a quiet zone that is free of any printing (white) around the entire perimeter of the code. The minimum size of the quiet zone is twice the size of the minimum element width or module.

Symbol Dimensions

The significant dimensional parameter that determines the size of every PDF417 is 'X' which represents the nominal width of each narrow element (module). As long as the X dimension is constant throughout a symbol, a PDF417 may be printed to any size that satisfies avaliable printing and scanning processes. The row height will also determine the height of a symbol. It is recomended to use a minimum row height between 3X and 4X depending on the level of error correction being used. A higher level of error correction will enable a smaller height.
The size of a PDF417 bar code can be calculated using the following formula:

Width = ((17 * # of columns) + 69) X + 2 (size of quiet zone)
Height = (# of rows) (row height) + 2 (size of quiet zone)

Error Detection and Correction

Error correction codewords provide the capability to both detect and correct errors in PDF417 bar codes. The Reed-Solomon Error Control Code algorithm is used to compute the error correction codewords. Each symbol contains a minimum of 2 error correction codewords and the highest level (8) will contain 512 codewords. There are nine levels (0 - 8) of error correction that can be chosen at the time of code creation. The amount of codewords starts at 2 for level 0 and doubles for each level all the way up to 512 codewords for level 8. I don't want to create a table for this so you'll have to do the math. It's not hard.
There are two types of errors that the error correction codewords can address:
1. Rejection errors (erasures) - missing, unscanned or undecodable symbol character where the position but not value are known.
2. Substitution errors (errors) - misdecoded or mislocated symbol charater where both the position and value are unknown.

The error correction capacity of any PDF417 can be determined by the following formula:

# of erasures + 2 (# of errors) = # of error correction codewords - 2

The table below provides recomended error correction levels based on the amount of data codewords in a PDF417 symbol. Higher levels of error correction are recomended for tough applications that are likely to incur significant symbol damage.
# of Data
Codewords
Error Correction
Level
1 - 40 2
41 - 160 3
161-320 4
321 - 863 5

Transmitted Data

The data symbols in a PDF417 bar code are translated into 8-bit bytes according to the compatcion modes that are used. All of the start and stop symbol characters, row indicators, symbol length descripto, mode switching symbol characters,and error correction symbol characters are not transmitted.

SAMPLE IMAGES


Average PDF417 Barcode
Average PDF417 bar code

Truncated PDF417 Barcode
Truncated PDF417 bar code

Driver License PDF417 Barcode
Driver's License PDF417 bar code

FedEx PDF417 Barcode
FedEx PDF417 bar code

USPS PDF417 Barcode
USPS PDF417 bar code

COMMON APPLICATIONS


  • Manufacturing part tracking
  • Postal
  • Lotteries
  • Package Tracking
  • Manifests
  • Bills of Lading
  • ID Cards
  • Registrations
  • Asset Tracking
  • Patient Bracelets
  • Medication
  • Tradeshow Lead Tracking
  • Automotive Inventory
  • Vehicle ID
  • LINKS


    ISO PDF417 bar code symbology specification (ISO/IEC 15438:2006)
    AIM Global PDF417 bar code specifications