ZPL data printing at label - zpl

I have to print data from DATA_FIELD that can contain between 5 to 50 characters
and label can fit just 20 letters
due i have right to left spelling words i have to print always top 20 letters from right other wise ill loose 1st words of customer name and its usually most important because contains name of the customer
for example i have a code
^FO40,240^A#N,40,40,E:DAVIDBD.FNT
^FD%%Depositor%%
^FS
thats depositor name is:
i dont know why its so long name -- can be variable
and i have to print always last 20 letters as:
its so long name --can be variable
will be happy to get any tips or help
Regards

There really isn't much ZPL can do to help. ZPL is really a page description language, not a programming language.
You will need to process the string to the correct length before adding it to your label code. If you are not using a mono spaced font, then you will have to accommodate for the variable character width.
If you are using a monospaced font you simply have to know how many characters will fit in the area you are trying to print.
If you can wrap text, you might make use of the Use the ^FB – Field Block command in the manual

Related

ZPL multiple lines without wordwrap

I am trying to create a block in which a variable length of txt can be printed on a label, depending on the length of the txt, creating one or more lines of course, this is no problem using ^FB or ^TB, but here's the catch: I want to disable word-wrap. Is this somehow possible?
^FT20,130^FB550,3,,^FH^FDDescription: $_3000DE$^FS
Unfortunately the ZPL Programming Guide doesn't mention any possibility to turn of the automatic word-wrap functionality of the ^FB or ^TB command.
So the answer to your question is a simple: No, it's not possible.
However, it does allow for the wrap to happen outside of the label which is what will work.
In my example below the 999 prints the wrapped text off the label (6x4 label):
^FO65,370^A0B,40,30^FB520,2,999^FD<Company Address1 Company Address1>^FS

does length of barcode image change because of barcode text

I was reading about barcodes, just a general query I came up with:
Does the length of barcode image change because of the text in it?
For eg: will the length of a barcode with 986262 be different than 111111?
Generally speaking, you can consider barcodes "monospaced". The only cases for which this isn't true are when a character needs an escape code to be represented.
For example in Code 128B, you need to escape to Code 128A to issue a control character like TAB, or in Code 128A you need to switch temporarily to Code 128B to embed a lowercase alphabetical character.

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.

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