The PDF417 barcode is a variable-length, alphanumeric 2D barcode with a user-selectable amount of Solomon-Reed Error Correction. PDF417 is referred to as a stacked linear barcode, as its 2-dimensional structure consists of vertical stacks of horizontal symbols.
Example Barcode
The following example barcode encodes the information "Barcode Xpress - PDF417 Writer"
as an PDF417 barcode:
Details
PDF417 and its condensed version, MicroPDF417, are unique among 2D symbologies - they are stacked linear barcodes that can be read by linear scanners. Each PDF417 barcode can have between 3 and 90 rows, between 1 and 30 columns, up to 925 data codewords, and between 2 and 512 error correction codewords. This allows encoding up to 1,033 bytes, 1,726 text characters, or 2,528 numeric characters. 1
Barcode Breakdown
The PDF417 symbol is comprised of several components:
-
Start Pattern - Wide bar and 3 thin bars on the left side of the symbol, indicating the barcode is beginning. The PDF417 start pattern is
81111113
. -
Left Row Indicator - The left-most codeword in between the start and stop pattern. This codeword contains information about the symbol's linear rows.
-
Data Columns - The codewords between the left and right row indicators, where the actual data and the ECC is encoded.
-
Right Row Indicator - The right-most codeword in between the start and stop pattern. This codeword contains more information about the symbol's linear rows.
-
Stop Pattern - Wide bar and 4 thin bars on the right side of the symbol, indicating the barcode is ending. The PDF417 stop pattern is
711311121
.
Each codeword consists of 4 black bars spaced across the 17 modules that make up the codeword, which is where the name PDF417 originates. Since PDF417 uses base 929 encoding, each codeword represent a number between 0 and 928.
The truncated variation on PDF417 omits the Right Row Indicator. Barcode Xpress will read truncated PDF417 barcodes but does not write them.
Differences Between MicroPDF417 and PDF417
MicroPDF417 | PDF417 |
---|---|
Maximum possible number of data characters per symbol 125 data codewords which can encode: 1) Text Compaction Mode: 250 characters (2 data characters per codeword). 2) Byte Compaction mode: 150 characters (1,2 data characters per codeword). 3) Numeric Compaction mode: 366 characters (2,93 data characters per codeword). |
Maximum possible number of data characters per symbol: 925 data codewords which can encode: 1) Text Compaction mode: 1 850 characters (at 2 data characters per codeword). 2) Byte Compaction mode: 1 108 characters (at 1,2 data characters per codeword). 3) Numeric Compaction mode: 2 710 characters (at 2,93 data characters per codeword). |
Symbol Size: 1) Number of rows: 4 to 44. 2) Number of data columns: either one, two, three, or four 3) Width in modules: 40X, 57X, 84X, or 101X including quiet zones 4) Maximum codeword capacity: 176 codewords. 5) Maximum data codeword capacity: 125 codewords. |
Symbol size: 1) Number of rows: 3 to 90. 2) Number of columns: 1 to 30. 3) Width in modules: 90X to 583X including quiet zones. 4) Maximum codeword capacity: 928 codewords. 5) Maximum data codeword capacity: 925 codewords. |
Number of error correction codewords: fixed for each available row/column combination, ranging from 7 to 50 codewords per symbol and reserving from 28% to 67% of codewords for error detection and correction, depending on symbol size. | Selectable error correction: 2 to 512 codewords per symbol. |
Managing Organization
PDF417 is governed by ISO/IEC 15438:2015. 1
Platform-Specific Notes
Caution: When using trial (unpaid) licensing, the words " UNLICENSED accusoft.com " will appear in the middle of every Data Matrix, QR Code and PDF417 barcode created, taking up 25 bytes of space. When testing the contents of generated barcodes, be aware of the extra space requirements.
The 1D/2D Professional edition supports creating QR Code, PDF417, and Data Matrix barcodes which can then be written using the ImagXpress control (sold separately) or by writing to a Printer Device Context. Your application logic will set the barcode writing parameters and make a call to the Create method. The output image will then be returned in the call. Included features to use with this functionality are:
- BarcodeData - Barcode value returned as an array of bytes.
- MinimumBarHeight property - PDF417 uses this value as a multiplier of the minimum barcode width to set the row module height.
- Rows - This value is used to set the number of rows.
- RowsCreated - The number of rows created.
- Columns - This value is used to set the number of columns to create.
- ColumnsCreated - The number of columns created.
- ErrorCorrectionLevel - This value is used for the amount of error correction to add to a barcode which supports selected error correction level.
- ErrorCorrectionLevelUsed - The value from the error correction level created.
- PDF417ErrorCorrectionLevel enumeration - The range of possible values to use with ErrorCorrectionLevel property.
- RequiredHeight - An output height value is required to create the barcode image.
- RequiredWidth - An output width value is required to create the barcode image.
Caution: When using trial (unpaid) licensing, the words " UNLICENSED accusoft.com " will appear in the middle of every Data Matrix, QR Code and PDF417 barcode created, taking up 25 bytes of space. When testing the contents of generated barcodes, be aware of the extra space requirements.
Barcode Xpress for .NET Core supports creating QR Code, PDF417, and Data Matrix barcodes which can then be written using the ImagXpress control (sold separately) or by writing to a Printer Device Context. Your application logic will set the barcode writing parameters and make a call to the Create method. The output image will then be returned in the call. Included features to use with this functionality are:
- BarcodeData - Barcode value returned as an array of bytes.
- MinimumBarHeight property - PDF417 uses this value as a multiplier of the minimum barcode width to set the row module height.
- Rows - This value is used to set the number of rows.
- RowsCreated - The number of rows created.
- Columns - This value is used to set the number of columns to create.
- ColumnsCreated - The number of columns created.
- ErrorCorrectionLevel - This value is used for the amount of error correction to add to a barcode which supports selected error correction level.
- ErrorCorrectionLevelUsed - The value from the error correction level created.
- PDF417ErrorCorrectionLevel enumeration - The range of possible values to use with ErrorCorrectionLevel property.
- RequiredHeight - An output height value is required to create the barcode image.
- RequiredWidth - An output width value is required to create the barcode image.
Caution: When using trial (unpaid) licensing, the words " UNLICENSED accusoft.com " will appear in the middle of every Data Matrix, QR Code and PDF417 barcode created, taking up 25 bytes of space. When testing the contents of generated barcodes, be aware of the extra space requirements.
If using the 1D/2D Standard or 1D/2D Professional editions, 2D writes are supported for PDF417 using an external application. Typically this can be done using the ImagXpress control (sold separately) or by writing to a Printer Device Context. The external application will set the barcode writing parameters and make a call to the MakeBarcode method. The output image will then be available in the image properties. Included features to use for this functionality are:
- MakeBarcodeStyle - The type of barcode to create.
- MakeBarcodeDataValueLength - Gets the length of the current barcode data in bytes.
- MakeBarcodeHeight - PDF417 uses this value as a multiplier of the minimum barcode width to set the row module height.
- MakeBarcodeRows - This value is used to set the number of rows.
- MakeBarcodeRowsCreated - The number of rows created.
- MakeBarcodeColumns - This value is used to set the number of columns to create.
- MakeBarcodeColumnsCreated - The number of columns created.
- MakeBarcodeErrorCorrectionLevel - This value is used for the amount of error correction to add to a barcode which supports selected error correction level.
- MakeBarcodeErrorCorrectionLevelUsed - The value from the error correction level created.
- MakeBarcodeRHeight - An output height value is required to create the barcode image.
- MakeBarcodeRWidth - An output width value is required to create the barcode image.
- GetMakeBarcodeDataValue - Gets the barcode value as an array of bytes.
- SetMakeBarcodeDataValue - Used to set the barcode value as an array of bytes.
Caution: When using trial (unpaid) licensing, the words " UNLICENSED accusoft.com " will appear in the middle of every Data Matrix, QR Code and PDF417 barcode created, taking up 25 bytes of space. When testing the contents of generated barcodes, be aware of the extra space requirements.
Similar Barcode Types
Related Barcodes
The MicroPDF417 barcode represents a condensed version of the PDF417 barcode.
References
- "PDF417 Bar Code Symbology Specification." ISO/IEC 15438:2015, ISO/IEC, Sep. 2015, www.iso.org/standard/65502.html.
For additional background and use-case information see our PDF417 barcode page.
For more information, see the Barcode Xpress SDK product page or try our online demos.