PDF417
also known as: ISO/IEC 15438:2001(E)
Example
Structure
The configuration for the default implementation is:
<barcode> <pdf417> <module-width>{length:0.352777mm}</module-width> <!-- 1 pixel at 72dpi --> <row-height>{length:3mw}</row-height> <columns>{number:2}</columns> <min-columns>{number:2}</min-columns> <max-columns>{number:2}</max-columns> <min-rows>{number:3}</min-rows> <max-rows>{number:90}</max-rows> <ec-level>{number:0}</ec-level> <quiet-zone enabled="{boolean:true}">{length:2mw}</quiet-zone> <vertical-quiet-zone>{length:default is same as quiet-zone}</vertical-quiet-zone> <width-to-height-ratio>{number:3.0}</width-to-height-ratio> </pdf417> </barcode>
Notes
- This symbology has no human-readable part!
- "ec-level" is the error correction level and must be between 0 and 8.
- If "vertical-quiet-zone" is not set explicitely, it is the same as the horizontal quiet zone.
- Depending on the size of the message, "columns" and "ec-level" may need to be adjusted. Read possible error messages carefully.
- Alternatively, you can remove the "columns" setting and work with "min/max-columns" and "min/max-rows" which allows the symbol to grow and shrink depending on the message. Using the "width-to-height-ratio" you can control the shape of the symbol. (Note: the valid number of rows must be between 3 and 90, the valid number of columns between 1 and 30)
- Using the "columns" setting overrides the "min/max-columns" setting! Or in other words: Setting "columns" sets "min-columns" and "max-columns" to the same value.
- Macro PDF417 functionality is not implemented, yet.
- Compact PDF417 functionality is not implemented, yet.
Message format
- All printable ASCII characters are valid characters.
- Byte compaction mode permits all 256 possible 8-bit byte values to be encoded.
- Using only numeric characters allows for smaller symbol sizes.
- Currently, no ECI functionality is available. All characters are interpreted in "cp437" (PC437) encoding.
- Binary data can be supplied through URLs if they are enclosed in "url()". RFC 2397 data URLs can be used to encode inline data. An example to encode the text "~Test~": url(data:;base64,flRlc3R+) or url(data:text/plain;charset=iso-8859-1,%7ETest%7E) (the "charset="iso-8859-1" is important to get characters above the 7bit US-ASCII set correctly!). Apache XML Graphics Commons has a DataURLUtil class that allows you to easily convert binary data to a data URL.