SourceForge Project Page


also known as: ISO/IEC 15438:2001(E)


Example PDF417 symbol


The configuration for the default implementation is:

      <module-width>{length:0.352777mm}</module-width> <!-- 1 pixel at 72dpi -->
      <quiet-zone enabled="{boolean:true}">{length:2mw}</quiet-zone>
      <vertical-quiet-zone>{length:default is same as quiet-zone}</vertical-quiet-zone>


  • 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.