Each PDF417 symbol consists of a stack of vertically
aligned rows with a minimum of 3 rows (maximum 90 rows). Each
row includes a minimum of 1 symbol character (maximum 30 symbol
characters), excluding start, stop and row indicator columns. The
symbol shall include a quiet zone on all four sides. Figure 1
illustrates a PDF417 symbol.

Figure 1
Each PDF417 row has the following parameters:
A leading quiet zone
A start character
A left row indicator symbol character
1 to 30 symbol characters (or columns)
A right row indicator symbol character
A stop character
A trailing quiet zone
NOTE: The number of symbol characters (or codewords)
defined in item 'd' above identifies the number of columns in the
PDF417 symbol.
A PDF417 symbol may contain up to 928 symbol
characters or codewords. ‘Symbol character’ is the more
appropriate term used to refer to the printed bar/space pattern;
‘codeword’ is the
more appropriate term for the numeric value of the symbol
character. The codewords follow this sequence:
The first codeword, the symbol length descriptor,
always encodes the total number of data codewords in the symbol,
including the symbol length descriptor itself, data codewords and
pad codewords, but excluding the number of error correction
codewords.
The data codewords follow starting with the most
significant encodable character. Function codewords may be
inserted to achieve data compaction.
Pad codewords are subsequently added to enable the
codeword sequence to be represented in a rectangular matrix. Pad
codewords may also be used to fill additional complete rows to
achieve the desired aspect ratio or as specified by an
application.
An optional Macro PDF417 Control Block.
Error correction codewords for error detection and
correction.
The codewords are arranged with the most significant
codeword adjacent to the symbol length descriptor, and are
encoded from left to right top row to bottom. Figure 2
illustrates in layout format the sequence for the symbol like
that shown in Figure 1. In Figure 2 an error correction level
of 1 has been used and one pad character was needed to completely
fill the symbol matrix.
The rules and advice for structuring the matrix are included in the table below.
|
L1 |
d15 |
d14 |
R1 |
|
|
L2 |
d13 |
d12 |
R2 |
|
S |
L3 |
d11 |
d10 |
R3 |
S |
T |
L4 |
d9 |
d8 |
R4 |
T |
A |
L5 |
d7 |
d6 |
R5 |
O |
R |
L6 |
d5 |
d4 |
R6 |
P |
T |
L7 |
d3 |
d2 |
R7 |
|
|
L8 |
d1 |
d0 |
R8 |
|
|
L9 |
e3 |
e2 |
R9 |
|
|
L10 |
e1 |
e0 |
R10 |
|
where L, R, d and e are as defined in 3.2
d15
= symbol length descriptor (in this example,
with a value of 16)
d14 to d1 =
encoded representation of data
d0 = pad codeword