Laan
Laan

Reputation: 33

ZPL Barcode missing front 2 digit

I am trying to print an EAN barcode vertically on a label with below ZPL code:

^FO895,273^BY3^BUB,200,Y,N
^FO895,261^FD9827755779090^FS

I'm expecting the output as 9827755779090. However, it prints out as 277557790900.

It cuts off the first 2 digit(98) and adds (0) on the final digit. Can I know how do I fix my code?

Upvotes: 0

Views: 840

Answers (2)

EdHayes3
EdHayes3

Reputation: 1953

^BE is the EAN command. It will calculate the check digit for you.

^BE; EAN-13 Bar Code. Description: The ^BE command is similar to the UPC-A bar code. It is widely used throughout Europe and Japan in the retail marketplace. The EAN-13 bar code has 12 data characters, one more data character than the UPC-A code. An EAN-13 symbol contains the same number of bars as the UPC-A, but encodes a 13th digit into a parity pattern of the left-hand six digits. This 13th digit, in combination with the 12th digit, represents a country code. • ^BE supports fixed print ratios. • Field data (^FD) is limited to exactly 12 characters. ZPL II automatically truncates or pads on the left with zeros to achieve the required number of characters.

Here is the fixed code (with changed ^FO).

^XA
^FO95,273^BY3^BEB,200,Y,N
^FD9827755779090^FS
^XZ

Upvotes: 1

MyICQ
MyICQ

Reputation: 1156

You are feeding the barcode more data than the specification is set for.

Plus, you are not creating an EAN code, but a UPC(12).

Specification :

UPC (technically refers to UPC-A) consists of 12 digits

Specification of ZPL II on UPC-A (code ^BU) section 5.34 specifically states:

^FD : exactly 11 characters. ZPL II auto-truncates or pads ON THE LEFT with 0 to achieve required number of characters.

(I added italics)

So you get

^FO895,261^FD9827755779090^FS
               -----------  << these 11 digits

It just so happens that the UPC checksum of 27755779090 is 0

This is why you would get same result for ^FO895,261^FD999999988889827755779090^FS

To get exactly what you want, use

^FO895,261^FD98277557790^FS

.. this will get a checksum of 4

Upvotes: 1

Related Questions