ZPL PDF-417 barcode symbol generates with extra spaces on Intermec PM4i - zpl

We are designing a label to be printed from SAP to an Intermec PM4i printer in ZSim mode. The printer is using the Generic Text driver, meaning that we can send raw ZSim-compatible ZPL code to the printer.
The content of the PDF417 barcode must be one string exactly 100 characters in length. This is my customer's requirement, not mine.
We developed an application that generates the proper ZPL code with all the characters in their proper position. However, when validating the printed barcode with a scanner using Motorola's 123Scan2 utility, all our data is there but we keep getting 6 additional spaces at around position 70 of the string, resulting in a string 106 characters long.
We also sent the ZPL code to the printer from a text editor and observed the same results. Below code snippet is what we are using to generate the barcode.
^XA
^MMT
^PW609
^LL0203
^BY2,4^FT331,111^B7N,4,0,,,N
^FH\^FDMN23012635105 A MN239598U205 QDR-032565.14812 H030^FS
^XZ
I have also experimented with sending the spaces as hex and that actually resulted in more extra spaces.
I am not sure what we are missing. Any ideas or suggestions will be greatly appreciated.

Related

Cannot read barcode produced by ZPL Code 39

I am trying to print a barcode (code 39) to a label (2" x .75") on a Zebra ZT610 (600 DPI) printer, but none of our 3 barcode scanners will decode the barcode. We are encoding a 14-character alphanumeric value. I created the label using ZebraDesigner, and passed the ZPL to the printer using Zebra Setup Utilities. I also use Labelary to check the label, and change parameter values.
I have tried every conceivable combination of the ^BY and ^B3 commands I can think of, that would fit on the label, including shortening the data for testing (encode only 8 characters). Here is the latest ZPL with a barcode that should be well within the label's printable area, but scanners will not read it:
^XA~JSN^LT0^MNM^MTT^PON^PMN^LH0,0^JMA^PR2,2~SD15^JUS^LRN^CI0^XZ
^XA^MMT^PW1200^LL0449^LS0^XZ
^XA^BY4,3,143^FT82,192^B3N,N,,N,N
^FD2116A83034137M^FS
^FT39,258^AAN,45,25^FH^FD2116A83034137M^FS
^PQ1,0,1,Y^XZ
Unreadable label image:
We also have an old Zebra R110Xi4 (203 DPI) printer that we also print code 39 barcodes to, on the same labels. The barcodes on these labels are perfectly readable by the scanners. This is the ZPL for it:
^XA~JSN^LT0^MNM^MTT^PON^PMN^LH0,0^JMA^PR8,8~SD30^JUS^LRN^CI0^XZ
^XA^MMT^LL0102^PW379^LS0^XZ
^XA^BY1,3,40^FT50,54^B3N,N,,N,N
^FD2116A83034137M^FS
^FT0,73^ABN,11,7
^FD2116A83034137M^FS
^PQ1,0,1,Y^XZ
Are there any suggestions as to what I might try next?
Thank you!

Is there a way to override the interpretation line with an arbitrary value in ZPL

I have looked at the Zebra documentation for ZPL as well as searched here on SO to no avail. My scenario is this, I wish to print a barcode on a label using a Zebra printer and ZPL print language but instead of the interpretation line (the human-readable bit below the barcode) being the human-readable version of the barcode I would like it to be a totally different value, e.g. a persons name.
This is the ZPL II guide I am using for reference: http://www.ypsylon.com/download/ZPLII_Guida.pdf
You cannot override the text that prints as part of the interpretation line (aka human readable), however you can turn the interpretation line off and add second text field:
^XA
^BY3,3,146^FT52,166^BCN,,N,N
^FD>:your_barcode_data_here^FS
^FT241,309^A0N,28,28^FH\^FDyour_text_data_here^FS
^PQ1,0,1,Y^XZ
To turn off the human readable set the 3rd parameter of the ^BC command to N.
You can play with the position of the text field to get the desired effect.
Check page page 89 of the current manual for more info.

Printing Images with ZPL code

I'm using ZDesigner to create my label and generate the zpl code. My label have several text boxes, a barcode, and a logo image.
I used the generated code on this webpage -> http://labelary.com/viewer.html, and the output was fine.
When I send the same zpl code to the printer (GC420D, installed as generic/text only) the logo image it's not printed.
ZDesigner uses the command ^GFA to send the image to the printer, I tried with diferent extensions (.pgn, .jpg and .bmp) and the results is always the same, no logo.
Any ideas why?
generated code:
^XA~TA000~JSN^LT0^MNW^MTD^PON^PMN^LH0,0^JMA^PR2,2~SD15^JUS^LRN^CI0^XZ
^XA
^MMT
^PW570
^LL0320
^LS0
^FO220,170^GFA,8000,0800,00020,:Z64:
eJztkjFugzAUhp+dICrUAUsQ1ogJsVXNASzV6dTBSH7KmiN4SMWKsvcOiAlxigw9QIdwnxooGFVl6FCpQ/7Blu3P7/2/ZYCb/pvIm2T37y9XLpk/bRbdUEEMiQUfpe88w+b4MLtcjMOd3XMA1oILIcnfmabnpvSg9GhTTHvuKtcbcty4OZ9z9cCV1h+RKiA8AGI5j5ZJSguT1nKuy/VuxXdAjjOuSJKOo7ZviBcZkEtA2svUNo2rnvOsv/BwQH1yQUczf55XlB2XThxRao9KOiCVM3LUcLRKht5jCpZH4auOiNaufZfaBKnTc5l4Iyfwim2LLX5ga9vWXnNOq6ZMm7FtdthFeZY/nXSkYVlrMRRV49oeUTrjmE/QjAy/MvjwswRBRGkL9jiNId7205De2JNhliECw6Hg9DTfxZX5eYYRBjbXhHU3Ouxdku5vMiY7h8gJLtlb9/mEMrn3xqjo2m5n5zTezuIxE4JlRnKhHHA7CaOlFHMRxpbc3XTTr/QJea9YBw==:F9E4^FS
^FT128,67^A0I,12,14^FH\^FDData de Emiss\C6o^FS
^FT128,129^A0I,12,16^FH\^FD#DOCUMENT#^FS
^FT76,103^A0I,12,16^FH\^FD#VAL#^FS
^FT100,49^A0I,12,16^FH\^FD#DE#^FS
^FT255,50^A0I,12,16^FH\^FD#CE#^FS
^FT408,46^A0I,12,16^FH\^FD#CC#^FS
^FT110,209^A0I,12,16^FH\^FD#Eur#^FS
^FT134,227^A0I,12,16^FH\^FDRecibo n\A7^FS
^FT124,101^A0I,12,16^FH\^FDEur^FS
^FT300,67^A0I,12,19^FH\^FDC\A2digo Entidade^FS
^FT434,67^A0I,14,16^FH\^FDC\A2digo Cliente^FS
^BY2,3,20^FT441,119^BCI,40,Y,N
^FD>;12345678>69^FS
^PQ1,0,1,Y^XZ
here is my answer a little late but it may be useful for someone. I had a problem when performing a print service for an android application, when pasting the zpl code into the text editor I was not noticing that for some reason some blank spaces were being added, I realized until I copied the code and I viewed it here http://labelary.com/viewer.html
after that I remove the blank spaces and the image could be displayed
zpl code with blank spaces

Text is printed incorrectly using ZPL

I print a text using ZPL but they are printed incorrectly. It has gaps in the middle. They are printed correctly to the real printer via the ZebraDesigner. But they are wrong when printing via ZPL:
^FT246,70^A0R,16,16
^FB900,2,,
^FDMaisstaerke, Austernuce, Cashewnuss,Pilz, Mais, Lattich, Pack Choi,Sojasprossen^FS
It is printed as 'Maisstaerke, Austernuce, Cashewnuss,Pilz, Mais, Lattich, Pack Choi, Sojasprossen'
(there is a big gap after 'Mais,').
http://screencast.com/t/sTiaxC3cMg
http://screencast.com/t/0QkypnsPyF89
Please help.
Thanks
I'm unable to reproduce the issue, but the field block width seems rather large; you didn't specify any label dimensions in the original post. If you use the following code--a combination from the original post and your comments:
^XA
^PW560
^LL560
^LS0
^FO246,70^GB28,300,,^FS
^FT246,70^A0R,16,16 ^FB300,2,, ^FDMaisstaerke, Austernuce, Cashewnuss,Pilz, Mais, Lattich, Pack Choi,Sojasprossen^FS
^PQ1,0,1,Y
^XZ
I can reproduce what is possibly the issue--the field block automatic word wrapping--by reducing the field block width to 300 dots.
I also drew a box around the block for visualization. You can test in on the Labelary Viewer.
Finally, if you're somehow composing the data make sure there are no special (non printable, such as tab, non-UTF-8 or accented) characters in it, and if so, you will have to pre-escape them.

Which should not be included in this ZPL Code?

I am developing a Windows Mobile App that requires printing into a Zebra printer. Problem is, I do not have the printer with me here in my country since the client did not provide any.
My approach was to design a label first in ZebraDesigner2, then print out the label into a text file. Printing the label to a text file instead of a printer sends out the ZPL Code to produce the label I was trying to print. Hence, I can generate ZPL codes faster by designing a label first then seeing the ZPL code. Kinda like having a drag and drop GUI with a background XML.
Say that I have this simple label that contains this text:
Hello World!
If I print this in ZebraDesigner2 it would be written to my text file as:
CT~~CD,~CC^~CT~
^XA~TA000~JSN^LT0^MNW^MTT^PON^PMN^LH0,0^JMA^PR5,5~SD15^JUS^LRN^CI0^XZ
^XA
^MMT
^PW609
^LL0406
^LS0
^FT1,29^A0N,28,28^FH\^FDHello World!^FS
^PQ1,0,1,Y^XZ
My main question is, which one do I include in my C# Code if im going to send this code to the printer via my Windows Mobile C# app? Do I include the part with ^XA until ^XZ? I believe that CT~~CD,~CC^~CT~ should not be included in my code If im not mistaken.
Late answer, but since this is getting viewed...
The CT line and first set of XA..XZ sequence sets up the modes, label length, printable area, etc.
If you remove those, it will take those settings from the label/printer settings, which is usually what you want. The printers can sense the length and width of the label.
Leaving them in can cause big problems, because if you define the printable area in your label, and then the next label type submitted does not, it will use the settings you have defined -- which can cause blank areas in the label, eg. cutoff USPS Label barcodes that are printed after your Zebra Designer custom labels.
Found this out the hard way - leave those out, and you should leave out of the remaining XA..XZ sequence the MMT, PW609, LL0406, and LS0 as well - your Hello World will not be affected.
If you really want to limit the area printed to, set up margins inside the printable area, etc, refer to the manual.
you have to look at the programmers guide before you remove anything of the code. The CT~ command for example changes the control prefix.
Search the internet or zebra.com site for "ZPL Programming guide".
So, leave the text file as is and then include that into your windows mobile application.
PS: zebra offers SDKs for label/receipt printers: http://www.zebra.com/gb/en/products-services/software/adapt-software.html
PS2: without a test printer you may get bad final results.

Resources