Bar Code Usages and Formats
This section describes the supported bar code types, and their usages and formats.
1D Bar Codes
UPC-A
The UPC-A bar code is the standard bar code format in the United States for items sold to the public. UPC-A contains numeric data only, and encodes a 12 digit number. The first digit is the system number character, the next five digits represent the supplier ID, the next five digits represent the product number, and the last digit represents the required checksum character. You do not need to specify the checksum digit, as the Bar Code Printing function calculates it automatically.
One digit is represented by two bars and two spaces, and its width is calculated as seven thin bars.
The system number character is printed as human readable text on the left side of the bar code, and the checksum digit is printed as human readable text on the far right side of the bar code.
The system number can have the following values:
0 or 7: | Regular UPC codes |
2: | Random weighted items |
3: | The National Drug Code and National Health Related Items Code |
4: | For use without a code format restriction, and with a checksum digit for nonfood items |
5: | For use on coupons |
1, 6, 8, and 9: | Reserved |
UPC-E (UPC-E0 and UPC-E1)
The UPC-E bar code is ideal for small packages because its data is compressed. The UPC-E bar code contains the same information as the UPC-A bar code except that there are a minimum of four zeros, which are suppressed. This reduces the number of digits in the bar code from 12 to 6. The Bar Code Printing function accepts the Zero Suppressed version of compressed and uncompressed UPC-E data. If data is sent uncompressed, the Bar Code Printing function automatically compresses the data.
One digit is represented by two bars and two spaces, and its width is calculated as seven thin bars. Note that caption text below the bar code can be activated to verify the checksum calculation.
EAN-8
The EAN-8 bar code is used in Europe for items sold to the public. EAN-8 contains numeric data only, and encodes an eight digit number. The first two digits represent the country code, the next five digits represent the product number, and the last digit represents the required checksum character. You do not need to specify the checksum digit, as the Bar Code Printing function calculates it automatically.
One digit is represented by two bars and two spaces, and its width is calculated as seven thin bars.
EAN-13
The EAN-13 bar code is the standard bar code format in Europe for items sold to the public. EAN-13 contains numeric data only, and encodes a 13 digit number. The first two digits represent the country code, the next six digits represent the supplier ID, the next four digits represent the product number, and the last digit represents the required checksum character. (The checksum character is separated from the rest of the bar code. This separation varies from country to country.) You do not need to specify the checksum digit, as the Bar Code Printing function calculates it automatically. If the checksum is sent as the 13th digit, it is ignored and recalculated.
All of the EAN and UPC bar codes can be followed by two or five digits, which represent supplemental information.
One digit is represented by two bars and two spaces, and its width is calculated as seven thin bars.
The system number character is printed as human readable text on the left side of the bar code, and the checksum digit is printed as human readable text on the right side of the bar code.
Code 39
The real name of Code 39 is "3 of 9 bar code." It is probably the most commonly used bar code, as it encodes not only digits, but also uppercase letters and punctuation. Spaces are encoded as bars. Text is encoded between the start and stop character "*", which is automatically generated by the Bar Code Printing function.
The Bar Code Printing function features two variations of the 3 of 9 bar code: With starting spaces and without starting spaces. Typefaces 24670 and 24671 do not encode the starting spaces in the data to create the bar code; however, typefaces 24672 and 24673 do encode the starting spaces.
Danish Postal 39 Bar Code (Denmark Only)
This is a special 3 of 9 bar code that is used on parcel labels for shipment throughout the postal service in Denmark. The Danish Postal 39 bar code contains 10 digits, a special checksum, and ends with "DK."
French Postal 39 Bar Code (France Only)
This is a special 3 of 9 bar code that is used on registered letter forms ("Recommandés") in France. The French Postal 39 bar code starts with "RA" or "RB," then it contains eight digits, a special checksum, and ends with "FR."
Extended 39
The Extended 39 bar code is based on the standard 3 of 9 bar code, however, it encodes all of the ASCII characters by generating two characters for each character in the string to encode. The Extended 39 bar code supports all ASCII codes from 0 to 126, and the bar code pattern is quite large.
Interleaved 2 of 5
Also called, "25 Interleaved." The Interleaved 2 of 5 bar code contains numeric data only, and requires an even number of digits in the string to be encoded. The number of digits can be from 2 to 30.
Industrial and Matrix 2 of 5
The Industrial and Matrix 2 of 5 bar codes contain numeric data only, and can have from 1 to 30 digits.
Code 128
The new standard for most bar code labels. Code 128 is a compact bar code for numeric and alphanumeric strings. It has three modes: A, B, or C, which encode a different range of characters. Code 128 Auto is an exclusive feature of the Bar Code Printing function. It enables you to encode all 128 ASCII characters without analyzing the string to encode, and automatically determines the required Code 128 modes to use.
The Bar Code Printing function analyzes data and switches dynamically between the A, B, and C modes to provide the most compact code. Code 128 Auto is fully compliant with the new worldwide standard for pallet labels, which use Code 128 modes B and C within the same pattern.
EAN-128 and UCC-128
EAN-128 and UCC-128 are variable length bar codes that start with the FNC 1 code, and are based on Code 128 A, B, and C modes, which encode the string. EAN-128 is used for pallet labels and EDI (Electronic Data Interchange) related bar code labels. The Bar Code Printing function automatically adds the FNC 1 code at the beginning of the bar code, and the checksum at the end.
German 25 Postal Bar Code (Germany Only)
The German 25 Postal bar code is a special 25 Interleaved code that is used on parcel labels for shipment throughout the postal service in Germany. The two codes used on these labels are:
The Leitcode, which is used to encode the destination area, and requires 13 digits.
The Identcode, which is used to encode the tracking number, and requires 11 digits.
Codabar/Monarch
Encodes digits and punctuation characters. Used mostly for the labeling of blood products.
Code 93
A compressed version of Code 39.
Extended Code 93
A compressed version of Extended Code 39.
MSI Plessey
The MSI Plessey bar code contains numeric data only, and is used on labels for the grocery industry.
ZIP + 4 Postnet (USA Only)
Prints the zip code as a bar code to speed mail through the United States Postal Service.
USPS Tray Bar Code (USA Only)
Since 1997, bar coded tray labels with a special 25 Interleaved bar code are required for automatically sending rate mailings of first-class, regular periodicals, and regular and enhanced carrier route standard mail letter size pieces, and for first-class flat size pieces.
USPS Zebra Bar Code (USA Only)
The United States Postal Service has defined the Zebra code. This is a series of diagonal lines to the right of the bar code which serve solely as a visual indication that a tray contains bar coded mail. The code must not appear on tray labels for non bar coded mail.
This standard began in July 1997. Due to its simplicity, the Zebra code is implemented in the Bar Code Printing function as a font with only one diagonal thick bar code line with the slash character "/" (ASCII value 47).
To create the USPS Zebra bar code, you have to call the font, and send three consecutive slash characters without any space in between in the PCL escape code sequence.
Example: <Esc>(10U<Esc>(s0p2.50h29vsb23591T///
USPS Sack Bar Code (USA Only)
Effective since July 1, 1997, bar coded sack labels with a special 25 Interleaved bar code are required for automatically sending rate mailings of regular periodicals and standard mail flat size pieces prepared in sacks.
Singapore 4 State Bar Code
The Singapore Postal Service is promoting the use of a 4 State bar code to speed up mail sorting. This 4 State bar code encodes a six digit number, and has a checksum appended to the data. You must input this six digit number into the Bar Code Printing function, which automatically calculates and prints the checksum.
Note that the Singapore 4 State bar code must end with a regular text font escape sequence.
Netherlands KIX Bar Code
The Dutch Postal Service is promoting the use of a 4 State bar code to speed up mail sorting. This 4 State bar code encodes a character string from five to 12 characters, and has a checksum appended to the data. You must input a valid character string into the Bar Code Printing function.
Note that the Netherlands KIX bar code must end with a regular text font escape sequence.
UK Royal Mail 4 State Customer Bar Code
The UK Postal Service is promoting the use of a 4 State bar code to speed up mail sorting. This 4 State bar code encodes a variable number of digits and letters, and has a checksum appended to the data. You must input the correct digits and letters into the Bar Code Printing function, which automatically calculates and prints the checksum.
Note that the UK Royal Mail 4 State Customer bar code must end with a regular text font escape sequence.
Australia Post 4 State Bar Codes
Established in 1998, Australia Post 4 State bar codes are used to enable the Australian Postal Service to sort incoming mail via bar codes that are read from letters. There are three different types of bar codes that correspond to FCC (Format Control Code) values 11, 59, and 62. The Bar Code Printing function only needs the DPID (Delivery Point IDentifier) and customer information to automatically generate the FCC or Reed-Solomon checksum.
For each type of bar code, the data must be sent in a specific format:
Standard Customer Bar Code (37-CUST) with only the sorting code (DPID):
<DPID>
Customer Bar Code 2 (52-FF-MET), DPID, and 16 bars of customer information (can be eight digits or five alphanumeric characters long):
<DPID>, <CustomerInfo>
Customer Bar Code 3 (67-FF-MET), DPID, and 31 bars of customer information (can be 15 digits or 10 alphanumeric characters long):
<DPID>, <CustomerInfo>
Example: <Esc>(s1p24787T12345678,7V 5<Esc>(s0p12h10v4099T
IMPORTANT |
<DPID> is the sorting code, and must be eight digits long. <CustomerInfo> is customer information; the p parameter selects the N or C symbol set, where N = numeric data, and C = alphanumeric data. |
NOTE |
For information on using the p parameter escape code in the Australia Post 4 State bar code, see "Font Parameters." |
2D Bar Codes
IMPORTANT |
To encode data including an escape character (27 decimal or 1B hexadecimal), data must be enclosed in a Transparent Print Data mode sequence. (See "Printing a Bar Code.") |
UPS MaxiCode
The MaxiCode bar code is a 2D bar code that consists of 884 hexagons surrounding a bull's eye finder pattern. One bit of information is encoded by one hexagon. Up to 100 characters of information can be encoded in one square inch, which is the approximate fixed-size of such a bar code. The MaxiCode symbology includes built-in error correction capability, automatic data compression, and a full ASCII character set.
MaxiCode was created by UPS (United Parcel Service), and endorsed by AIM (Automatic Identification Manufacturers) (officially designated by AIM as "Uniform Symbology Specification MaxiCode") as a multipurpose EDI (Electronic Data Interchange), two-dimensional bar code. UPS uses MaxiCode to encode all parcel information to provide faster and better service to their clients.
MaxiCode data is a string made of a header, the ANSI (American National Standards Institute) message, and an End of Transmission code.
The following is detailed information found in the ANSI message for the UPS MaxiCode.
NOTE |
Always use uppercase characters for MaxiCode data. |
List of MaxiCode Information Fields
Field Name | Description | Required/Optional |
Destination Postal code | Five or nine alphanumeric characters | R |
Destination Country code | Three digits | R |
Class of service | Three digits | R |
Tracking number | 10 or 11 alphanumeric characters | R |
Standard Carrier Alpha Code | UPSN | R |
Shipper number | Six alphanumeric characters | R |
Day of pick up | Three digits | R |
Shipment ID number | One to 30 alphanumeric characters | O |
Item x of n in total | x = one to three digits n = one to three digits Example: 20/458 | R |
Weight (g) | One to three digits | R |
Address validation (Y/N) | Yes or No | R |
Destination address | One to 35 alphanumeric characters | O |
Destination city | One to 20 alphanumeric characters | R |
Destination state | Two upper case letters | R |
The different fields are separated by <Gs> (Group Separator; ASCII 29, HEX 1D). The bar code data terminates with <Eot> (End of transmission; ASCII 04, HEX 04). To separate format types, use <Rs> (Field separator; ASCII 30, HEX 1E).
To separate primary and secondary address numbers, use <Fs> (Address field separator; ASCII 28, HEX 1C). The Bar Code Printing function expects to get both the primary and secondary messages from the application, separated by a comma.
The primary message contains the following information:
1. Label number |
2. Number of labels for the shipment |
3. MaxiCode mode. Use mode 2 for domestic US shipments, mode 3 for international shipments |
4. Postal code |
5. Country code |
6. Class of service |
NOTE |
A comma must separate all of these parameters. |
The secondary message contains the following information:
| Examples |
1. ANSI Message Header | [ )><Rs> |
2. Transportation Data Format Header | 01<Gs>96 |
3. Tracking Number | 1Z00004951<Gs> |
4. SCAC (Standard Carrier Alpha Code) | USPN<Gs> |
5. UPS Shipper Number | 06X610<Gs> |
6. Julian Day of Pickup | 159<Gs> |
7. Shipment ID # | 1234567<Gs> |
8. Package n/x | 1/1<Gs>* |
9. Package Weight | 10<Gs> |
10. Address Validation | Y<Gs> |
11. Ship to Address | 634 ALPHA DR<Gs> |
12. Ship to City | PITTSBURGH<Gs> |
13. Ship to State | PA |
14. End of Format character | <Rs> ASCII 30 |
15. End of Transmission character | <Gs> ASCII 04 |
* This information is also in the primary message.
NOTE |
UPS MaxiCode expects the secondary message to be padded with a total of 84 fill characters. The Bar Code Printing function automatically pads the data to the right of the MaxiCode. (The fill character is '!' ASCII 33, HEX 21.) The secondary message cannot be longer than 84 characters. Therefore, the destination's address length must be truncated if the total length of the secondary message is greater than 84 characters. A destination address is optional in the MaxiCode data. If the MaxiCode data is too long, the Bar Code Printing function will not print the MaxiCode, and instead prints an error message indicating how many characters exceeded the maximum length of 84. Blank fields must also include the <Gs> separator. |
After the <Eot> character, the application must immediately send a PCL escape sequence to switch to a font other than MaxiCode.
The following is the escape sequence for switching from MaxiCode to Courier font 10CPI:
<Esc>(s0p10h12vbs4099T
NOTE |
If you use a character set other than PC-8, you should resend the character set selection before selecting the new font. |
Example:
<Esc>(s24800T1,1,2,152382802,840,001,[)><RS>01<GS>96995011234<GS>840<GS>025<GS>
1Z07000168<GS>UPSN<GS>WX9031<GS>272<GS><GS>1/1<GS>15<GS>Y<GS>123<FS>300<GS>
<GS>AK<RS><EOT><Esc>(s0p10h12vbs4099T
PDF-417
The PDF-417 bar code is a high-density, 2D bar code created by Symbol Technology, and is an ANSI/AIM USA standard. This bar code consists of a stack of rows with small black rectangles arranged in columns. The number of rows and columns can be user defined or set automatically to fit a ratio (2:3 is the most common ratio).
PDF-417 features built-in error correction capability, automatic data compression, and full ASCII and binary character sets. It can encode up to 1,848 characters per bar code based on the compression level achieved.
PDF-417 supports two encoding modes: ASCII (letters, punctuation, and digits), and Binary (any binary value between 0 and 244). The ASCII mode has a better data density than the binary mode (maximum 106 versus 177 bytes per cm2), and can encode more data (maximum 1,848 bytes versus 1,108 bytes). The Bar Code Printing function automatically selects the best encoding mode (Binary or ASCII) for the supplied data.
PDF-417 bar codes are read by a laser scanner and CCD (Charge Coupled Device) cameras.
Number of rows (min/max): 3/90
Number of columns (min/max): 1/30
There are many symbol options for the PDF-417 bar code that are activated using the p parameters of the PCL escape sequence.
NOTE |
The number of rows multiplied by the number of columns must be less than 929. For more information on using the p parameter escape code in the PDF-417 bar code, see "Font Parameters." |
Data Matrix
Data Matrix is a high-density, 2-D matrix bar code symbology developed by RVSI - Acuity CiMatrix, which can encode a lot of information in a very small space. The Data Matrix symbology has extensive error correction capabilities, which uses the ECC200 error checking method. A Data Matrix symbol can store between 1 and 3,116 numeric or 2,335 alphanumeric characters, and is scalable between a 1 mm square to a 14" square.
Since the overall size of the Data Matrix symbol is infinitely scalable, the Data Matrix symbol can be read at virtually any distance, given the right combination of size and reading equipment.
The Bar Code Printing function can scale the Data Matrix bar code by defining the small black square height and width. It also automatically optimizes the encoding (binary, text, and digits) by analyzing the data.
Aztec Code
Aztec Code is a 2-D matrix bar code symbology developed by Welch Allyn. It is designed to combine the best characteristics of several first generation symbols with special attention to the ease of printing, orientation, field distortion, high-level data security with user selected redundancy, and efficient storage for small to large data messages. The smallest Aztec Code symbol encodes 13 numbers or 12 letters, while the largest Aztec Code symbol encodes 3,832 numbers, 3,067 letters, or 1,914 bytes of binary data. The Bar Code Printing function can scale the Aztec Code by defining the small black square height and width.
Codablock F
Codablock F is a 2-D bar code developed by ELMICRON as an extension of Code 128. Using Codablock F, you can separate Code 128 into several sections and arrange them into a multiple row symbol. A Codablock F symbol may contain 2 to 44 rows of up to 61 characters (up to 122 for numeric data per row), and supports most features of Code 128.
QRCode
QRCode is a 2-D matrix bar code symbology developed by the DENSO WAVE INCORPORATED. It is available in two models: Model 1 and Model 2 (an enhanced version of Model 1). The Bar Code Printing function supports four levels of error correction, a wide range of symbol sizes, and can scale the QRCode by defining the small black square height and width.
A QRCode symbol can include numeric and alphanumeric data with high-compression, binary, Kana, and Kanji data. The maximum number of characters per QRCode symbol are as follows:
QRCode | Model 1 | Model 2 |
Numeric Characters | 1,167 | 7,089 |
Alphanumeric Characters | 707 | 4,296 |
Bytes | 486 | 2,953 |
Kanji Characters | 299 | 1,817 |
OMR Marks
OMR marks are horizontal or vertical black solid lines that are found on printed mailing sheets. The mail processing machines check for these lines on every page that is fed into them. The tracking of these marks triggers mechanical processes, such as the folding of all pages that should be inserted together in an envelope.
The Bar Code Printing function can generate OMR marks that are used by insertion, folding, or sealing systems found in mailrooms.
There is no standard for OMR marks. Specifications vary from machine to machine and per OMR scanning software. However, the Bar Code Printing function can be configured to work with any specification.
The OMR mark's width, spacing, and length can be defined by using the b, s, and v parameters.
NOTE |
Some mail processing machines use thicker marks to indicate start and stop positions, while others only use one type of mark for all processes. Marks in the data are defined from top to bottom. |
Usage: Only three characters can be used as data for OMR marks: '0', '1', and '2'.
0: The mark is skipped. |
1: Regular mark. (Thickness is defined by the first b parameter.) |
2: Heavy mark. (Thickness is defined by the second b parameter.) |
Euro Currency Symbols and Additional Fonts
The Bar Code Printing function features fonts and scalable logos that can be used with bar codes on labels and other documents, Euro symbols, manufacturing, electronic, and safety symbols.
Euro and Other Currency Symbols
Escape Sequence: <Esc>(10Q<Esc>(s1p<size>vsb10452T
<size> is the symbol size in points (1/72").
Manufacturing and Safety Symbols
Escape Sequence: <Esc>(10Q<Esc>(s1p<size>vsb10400T
<size> is the symbol size in points (1/72").
Manufacturing and Safety Symbols
Green Point Symbol: <Esc>)10Q<Esc>)s1p20vsb10400TE
with text: <Esc>)10Q<Esc>)s1p20vsb10400TDE
with gray arrows: <Esc>)10Q<Esc>)s1p20vsb10400Td
<Esc>*c15G <Esc>*v2Te <Esc>*vT
Recycling Logo: <Esc>(10Q<Esc>(s1p20vsb10400Tghij<8>123
Electronic and Safety Symbols
Escape Sequence: <Esc>(10Q<Esc>(s1p <size>vs3b10400T
<size> is the symbol size in points (1/72").
Odette Transport Label Macros
The Bar Code Printing function contains the VDA 4902/Odette label used in the automobile industry. This label is included as a PCL5 macro that is retrieved from any application which uses its number.
If you are using the Macro TTF font:
Install the Macro Exec TTF font, and then enter the macro number using it.
If you are using PCL5 commands:
To print one empty label on the page, send the following sequence at the beginning of the page:
~&l1E~&a0h0V~&fs###y3x1S
To print two empty labels on the page, send the following sequence at the beginning of the page:
~&l1E~&a0h0V~&fs###y3x1S~&a0h4100V~&fs###y3x1S
NOTE |
### must be replaced by the three digit macro number (see the table below). '~' in the PCL escape sequences above is the FreeScape character. Replace it with its new value if it has been changed to another value through the <Esc>**#J escape sequence or from the FreeScape menu. |
V3 German | V3 English | V3 French | V3 Italian | V3 Spanish | V4 English | V4 German |
300 | 301 | 302 | 303 | 304 | 311 | 312 |
An example of an Odette label macro with data, bar codes, and a security symbol added.
NOTE |
The safety symbol is included in the safety symbol fonts. |