SF page

Homepage of project pdf417codec

What is pdf417codec?

pdf417codec is a library to encode and decode pdf417 2-dimensional barcodes. The library is written in the D programming language, but accessible (as DLL) from many languages through a C interface.

Encoding means to take arbitrary data and create an image of the barcode which can be printed on labels or as part of a letter.

Decoding means to take an image of the barcode e.g. from a scanner or webcam and return the data which was encoded in the barcode. This must even be possible when the barcode was skewed, distorted or parts of the code became unreadable.

The library does not cover:

  • Transferring image data from a scanner or camera
  • Handling different image formats
  • Mechanisms to transfer decoded data to an application
Example barcode

What is pdf417?

pdf417 is a standard to encode data in a compact, 2-dimensional barcode image. Pdf stands for "portable document file" and has nothing to do with Adobe's well known PDF-format. pdf417 provides:
  • Special efficient compaction of text and numbers (but any byte values are possible)
  • Error correction through Reed-Solomon codes
  • Distribution of a large file among multiple barcodes (also called "symbols") with additional information to concatenate them back in the right order
Unfortunately the official specification is not free accessible but detailed information about the code can be found at

What is the D programming language?

The D programming language is a new, evolving compiled language, based on C, C++ and Java, but avoiding many problems of these languages. Main features are:
  • Object orientation
  • Templates
  • Exceptions
  • Garbage collection
  • No include files necessary
  • No mess with a preprocessor, instead clean support for conditional compilation
Full Documentation:
Implementation DMD (only partly open source, for Windows and x86 Linux):
Implementation GDC (front end for GCC, open source, widely portable):

Current state of the library

C interface:
 20 % Support for basic encoding/decoding, no errorhandling.
 60 % Support for standard text, byte and numeric compaction, no macro compaction
 30 % Working for perfect images, proper recognition also with small unreadable areas, problems with even litely skewed or distorted images, severe problems with noisy images.
 10 % Lots of experimental code, therefore no speed optimization yet.


© Michael Butscher, last modified 06/28/2005 Logo