The component is used to create the MicroPDF417 Barcode symbols. It is defined in the pMicroPDF417 unit.

MicroPDF417MicroPDF417 is a multi-row symbology, derived from and closely based on PDF417. MicroPDF417 is designed for applications with a need for improved area efficiency but without the requirement for PDF417's maximum data capacity. A limited set of symbol sizes is available, together with a fixed level of error correction for each symbol size. Module dimensions are user-specified to enable symbol production and reading by a wide variety of techniques.

Symbol sizes

MicroPDF417 symbols shall conform with certain predefined combinations of number of stacked rows, columns, and number of error-correction codewords, referred to as symbol sizes. The symbol size values from mpSize_1_11 to mpSize_4_44 corresponding to these symbol sizes, and denotation the number of columns and rows in every symbol size. For example, the symbol size value mpSize_2_23 denotations the MicroPDF417 symbol size is 23 stacked rows by 2 columns. These symbol size values are defined in the pMicroPDF417 unit.

The RowHeight property can be used to specify the height for each row, in modules.

You can use the MinSize property to specify a minimum symbol size, and use the MaxSize property to specifiy a maximum symbol size. According to the priority order specified by the StretchOrder property, the first symbol size that accommodates the barcode text will be automatically selected between the minimum symbol size and the maximum symbol size.

You can use the CurrentSize property to get the factual symbol size.

If the barcode text is so long that it cannot be encoded using the maximum symbol size specified by the MaxSize property, an OnInvalidLength or OnInvalidDataLength (only for Delphi/C++ Builder 2009 or later) event will occur.

Quiet zones

The symbol shall include a quiet zone on all four sides. The minimum quiet zone is equal to 1 module on all four sides. So the minimum values of LeadingQuietZone, TrailingQuietZone, TopQuietZone, and BottomQuietZone properties are equal to 1.

Error checking and correcting (ECC)

Each MicroPDF417 symbol contains at least seven error correction codewords. The error correction codewords provide capability for both error detection and correction. The number of error correction codewords for a MicroPDF417 symbol is fixed for each symbol size.

Character set

Escape sequences

If the AllowEscape property is set to true, following escape sequences are supported by the component, you can insert them to the barcode text:

Note, the "{RS}" is ASCII character RS (ASCII value 30), the "{GS}" is ASCII character GS (ASCII value 29), and the "{EOT}" is ASCII character EOT (ASCII value 4).

Extended Channel Interpretation (ECI)

The Extended Channel Interpretation (ECI) protocol allows the output data stream to have interpretations different from that of the default character set. Five broad types of interpretations are supported in MicroPDF417:

The ECI is identified by an integer (up to 6 digits) which is encoded in the MicroPDF417 by the ECI indicator block. The escape sequence "\e[<ECI_Number>]" is used to place the ECI indicator block to the barcode text:

ECI indicator blocks may be placed anywhere in the barcode text in a single or structured append set of MicroPDF417 symbols. For example:


Normally, the sub-mode invoked immediately prior to the ECI escape sequence is preserved for the encodation immediately after it. Thus, sub-mode latches and shifts are preserved across an ECI escape sequence; and thus a sub-mode shift immediately before an ECI escape sequence is not ignored. If the value "poIgnoreShiftBeforeECI" is included in the Options property, the sub-mode shift immediately before an ECI escape sequence is ignored, but a sub-mode latch immediately before an ECI escape sequence is never ignored.

The AllowEscape property should be set to true in order to place the ECI indicator blocks. Any ECI invoked shall apply until the end of the barcode text, or until another ECI indicator block is encountered. Thus the interpretation of the ECI may straddle two or more symbols.

Structured append

Structured append provides a mechanism for the data in a file too large to be split into blocks and be represented in more than one MicroPDF417 symbol. Up to 99999 individual MicroPDF417 symbols may be used to encode data in structured append.

Structured append symbols differ from ordinary MicroPDF417 symbols in that they contain additional control information in a structured append control block. The control block defines the file ID, the concatenation sequence and optionally other information about the file. structured append decoder uses the control block's information to reconstruct the file correctly independently of symbol scanning order. The escape sequence "\s[<Index>, <File_ID>, <File_Name>, <Amount>, <Time_Stamp>, <Sender>, <Address>, <File_Size>, <Checksum>]" is used to place the structured append control block to the barcode text:

The ECI escape sequences, "\900", "\901", "\902", and "\924" can be used in the File_Name, Sender and Address fields. If you want place the comma in these fields, please use the escape sequence "\," instead.

An empty string indicates an unused optional field, the subsequent comma can be omitted if all fields of succeeding are unused. otherwise, the comma is required. All unused fields at the end can be omitted.

The control block may only be placed once in the barcode text. Also, it shall be placed at end of the barcode text. The OnInvalidChar or OnInvalidDataChar (only for Delphi/C++ Builder 2009 or later) event will occur if the control block be placed more than once or it isn't placed at end of the barcode text.

The following is an example of structured append symbol:

ABCDEFGHIJKLMN\s[2,001287023,,5,2008-12-03 05:30:00,,USA]

Note, if the segment count is unused, a structured append terminator, "\t" escape sequence is required in last symbol within the set of structured append symbols. Otherwise, it's optional. The "\t" escape sequence shall be placed at the end of the barcode text, after the structured append control block. For example:


The AllowEscape property should be set to true in order to place the structured append control block and the terminator.


(*): The Data property, OnInvalidDataLength and OnInvalidDataChar events are available only for the Delphi/C++ Builder 2009 or later.