Reputation: 33
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
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
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).
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