PDF417 is a stacked linear barcode symbol format used in a variety of applications,
primarily transport, identification cards, and inventory management. PDF stands for Portable
Data File. The 417 signifies that each pattern in the code consists of 4 bars and spaces,
and that each pattern is 17 units long. The PDF417 symbology was invented by Dr. Ynjiun
P. Wang at Symbol Technologies in 1991. It is represented by ISO standard 15438.
Applications PDF417 is one of the formats that can be used
to print postage accepted by the United States Postal Service. PDF417 is also selected by
the airline industry's Bar Coded Boarding Pass standard as the 2D bar code symbolism
for paper boarding passes. PDF417 is the standard selected by the Department of Homeland Security
as the machine readable zone technology for RealID compliant driver licenses and state
issued identification cards. It is also used by FedEx on package labels.
Features In addition to features typical of two dimensional
bar codes, PDF417's capabilities include: Linking. PDF417 symbols can link to other
symbols which are scanned in sequence allowing even more data to be stored.
User-specified dimensions. The user can decide how wide the narrowest vertical bar is, and
how tall the rows are. Public domain format. Anyone can implement
systems using this format without any license. The introduction of the ISO/IEC document states:
Manufacturers of bar code equipment and users of bar code technology require publicly available
standard symbology specifications to which they can refer when developing equipment and
application standards. It is the intent and understanding of ISO/IEC that the symbology
presented in this International Standard is entirely in the public domain and free of
all user restrictions, licences and fees.
Format
The PDF417 bar code consists of 3 to 90 rows, each of which is like a small linear bar code.
Each row has: a quiet zone. This is a mandated minimum amount
of white space before the bar code begins. a start pattern which identifies the format
as PDF417. a "row left" codeword containing information
about the row 1-30 data codewords: Codewords are a group
of bars and spaces representing one or more numbers, letters, or other symbols.
a "row right" codeword with more information about the row.
a stop pattern. a quiet zone.
All rows are the same width; each row has the same number of codewords.
Codewords PDF417 uses a base 929 encoding. Each codeword
represents a number between 0 and 928 inclusive. The codewords are represented by patterns
of dark and light regions. Each of these patterns contains four bars and four spaces. The total
width is 17 times the width of the narrowest allowed vertical bar; this is where the 17
in the name comes from. Each pattern starts with a bar and ends with a space.
The row height must be 3 times the minimum width: Y ≥ 3 X.
There are three distinct bar–space patterns used to represent each codeword. These patterns
are organized into three groups known as clusters. The clusters are labeled 0, 3, and 6. No bar–space
pattern is used in more than one cluster. The rows of the symbol cycle through the three
clusters, so row 1 uses patterns from cluster 0, row 2 uses cluster 3, row 3 uses cluster
6, and row 4 again uses cluster 0. Which cluster can be determined by an equation:
Where K is the cluster number and the bi refer to the width of the i-th black bar in the
symbol character. Alternatively,
Where Ei is the i-th edge-to-next-same-edge distance. Odd indices are the leading edge
of a bar to the leading edge of the next bar; even indices are for the trailing edges.
One purpose of the three clusters is to determine which row the codeword is in. The clusters
allow portions of the symbol to be read using a single scan line that may be skewed from
the horizontal. For instance, the scan might start on row 6 at the start of the row but
end on row 10. At the beginning of the scan, the scanner sees the constant start pattern,
and then it sees symbols in cluster 6. When the skewed scan straddles rows 6 and 7, then
the scanner sees noise. When the scan is on row 7, the scanner sees symbols in cluster
0. Consequently, the scanner knows the direction of the skew. By the time the scanner reaches
the right, it is on row 10, so it sees cluster 0 patterns. The scanner will also see a constant
stop pattern. Encoding
Of the 929 available codewords, 900 are used for data, and 29 for special functions. Three
different encoding schemes are defined and can be mixed as necessary within a single
symbol. Text: each codeword represents one or two
characters. Byte: each group of 5 codewords represents
6 bytes. Numeric: groups of up to 15 codewords represent
as many as 44 decimal digits. Error correction
When the PDF417 symbol is created, from 2 to 512 error detection and correction codewords
are added. PDF417 uses Reed–Solomon error correction. When the symbol is scanned, the
maximum number of corrections that can be made is equal to the number of codewords added,
but the standard recommends that two codewords be held back to ensure reliability of the
corrected information. Comparison with other symbologies
PDF417 is a stacked barcode that can be read with a simple linear scan being swept over
the symbol. Those linear scans need the left and right columns with the start and stop
code words. Additionally, the scan needs to know what row it is scanning, so each row
of the symbol must also encode its row number. Furthermore, the reader's line scan won't
scan just a row; it will typically start scanning one row, but then cross over to a neighbor
and possibly continuing on to cross successive rows. In order to minimize the effect of these
crossings, the PDF417 modules are tall and narrow — the height is typically three times
the width. Also, each code word must indicate which row it belongs to so crossovers, when
they occur, can be detected. The code words are also designed to be delta-decodable, so
some code words are redundant. Each PDF data code word represents about 10 bits of information ≈ 9.8),
but the printed code word is 17 modules wide. Including a height of 3 modules, a PDF417
code word takes 51 square modules to represent 10 bits. That area does not count other overhead
such as the start, stop, row, format, and ECC information.
Other 2D codes, such as DataMatrix and QR, are decoded with image sensors instead of
uncoordinated linear scans. Those codes still need recognition and alignment patterns, but
they do not need to be as prominent. An 8 bit code word will take 8 square modules.
In practice, a PDF417 symbol takes about four times the area of a DataMatrix or QR Code.
References
ISO/IEC, Information technology – Automatic identification and data capture techniques
– PDF417 bar code symbology specification, ISO/IEC 15438:2006(E)
US 5243655, Wang, Ynjiun P., "System for Encoding and Decoding Data in Machine Readable Graphic
Form", issued September 7, 1993 . PDF417 patent.
External links PDF417 Description
Free font, Windows encoder and detailed explanation PDF417 Barcode Generator
ZXing PDF417 online decoder PDF417 online decoder