Royal Mail CMDM Barcode - zpl

I am using BarTender to design a set of labels to print to ZPL printers. One of my requirements is for a Royal Mail Mailmark label which uses the CMDM Barcode.
We output to file using alias values in the label fields.
We then run an application which swaps out the alias values and replaces them with the database values we actually want to print.
The issue is when I open label designs previously used to create the template files, the output (which previously was in simple text form) has now been outputted into a DGR....GRF format. (Please see below)
Unfortunately the CMDM barcode on BarTender is designed so that I can't just use an alias. That is my understanding anyway.
^FT407,1137
^A0B,28,34^FD*ship_to_zip^FS
^FT659,1148
^A0B,25,31^FDOur Reference ^FS
^FT564,1148
^A0B,25,28^FDCustomer Reference^FS
^FT595,1148
^A0B,25,28^FD*po_nbr^FS
^FT697,1148
^A0B,25,28^FD*distro_nbr^FS
^FO553,300
^BY2^BCB,124,N,N^FD>:*carton_nbr^FS
^FO28,72
^XGR:SSGFX000.GRF,1,1^FS
^ISR:SS_TEMP.GRF,N^XZ
~DGR:SSGFX001.GRF,1352,13,:Z64:eJydk9ERBCEMQtMB/XdJBxzE3D93ruP6nDHBoMDvjYBEDoZqYeSF8TiCSqC7vD2IEvK5Z3cNTkRqZ2phnM4zKyZbSIic0YprcIAMLrpqUHQSV8UOUo/dij1dBTGXCaT1oAIrdEp6Kbeig/jlCCZNC7H3Sk6U4ADMEV3+TdrAXoxLjRL4HoUjjFqIOM+2/i2k7PEY++/A+fTd2cKz+ElVCTN7XVdqC/b1pK4FFeRlnNT3agv4p30AH1GDtw==:D4A2
^XA
^ILR:SS_TEMP.GRF^FS
^FO242,308
^XGR:SSGFX001.GRF,1,1^FS
^PQ1,0,1,Y
^XZ
Has anyone come across this problem or know of a ZPL command I can use for this type of Barcode?
The main issue is Royal Mail want the Latch to C40 at the beginning of the barcode. When I print a standard 2D DataMatrix barcode, this latch to C40 code appears in the middle of the code.
Just need to know if I can move it to the beginning of the code.
Thanks

The ZPL datamatrix command does not support manually encoding the code words, which is what you need to force a latch to C40. But you can use BarTender to get around this. (I am not associated with Seagull Scientific, but my clients often use it.)
Instead of programmatically modifying the BT format file directly, you should be generating a data file that provides the field data for the label. BarTender calls this "data file integration".
See this video for more information: https://support.seagullscientific.com/hc/en-us/articles/227353867-Print-Document-Using-a-Data-File-Integration-Video-6-31-

Related

Using Multiple Variables to Create a Single Data Matrix in ZPL

I am trying to set up a label template for a Zebra printer that has 4 variables containing different pieces of information, FN1, FN2, FN3, and FN4. These 4 variables are printed to text and barcode fields on the label, however I also want to concatenate them together to create a single data matrix containing the data in all 4 variables.
I have tried inserting line breaks using \& as suggested on page 144 of the documentation but this does not seem to have any effect. The code for the field data I'm trying to use is shown below.
^FH\^FN1\&^FN2\&^FN3\&^FN4^FS
Only the content of the last variable in the list (FN4, in that case) is encoded into the data matrix, the rest are ignored. I suspect I'm missing something fairly straightforward, but have not been able to find any articles relating to this exact problem.
For anyone else looking for this kind of solution, I have received confirmation from Zebra that this is unfortunately not currently (as at 01/02/2023) possible in ZPL. You should be able to implement it with ZBI, but this is quite a different approach and requires compatible hardware.

How to read a specific prefix information from gs1 barcode, with scanner?

I am working with products that contains gs1 barcodes where are many application identrifiers (AI) or prefix, like (01)....(17).....(10).... . The scanner I 've got its called honeywell ms5145 and when I scann the barcode it prints as output the numbers of (01) identifier and ends before the AI (17). After a bit of searching I found some configuration barcodes where one of them is for usb full speed. When I scan this config and after that the barcode of the product the output was defferent and it was printing all the information of the barcode from (01) to (10). The (10) application identifier is for batch lot numbers and thats I want to scan. For example lets say that the barcode in one product is (01)98923424(17)99933333(10)111111B. If I scan without the usb full speed config the output will be 98923424 which is the contex of the (10) application identifier and if I scan with the config of usb full speed the output will be 9892342499933333111111B,without of course the AI.My question is, is there any way without any software configuration to extract only the batch lot number of the gs1 barcode. Genneraly is it possible to extract what ever application identifier I want with one scan ?
Notice that valid GS1 codes must contain 01 identifier, and must not repeat same identifier.
If you have a GS1 structured code like (01)12345678901238(17)231220(10)987654 you most likely scan everything.
But, your scanner can be configured to manipulate the data using the MetroSet2 software. Look at data formatting.
I have not tried it since I do not have said scanner, but typically formatting is some variant of substring. This will work if the barcodes your work with have same length. GS1 structures may switch order though, this will cause your substring to be incorrect.
An alternative could be scanners that are programmable in Javascript such as those from Code Corporation I am not affiliated with CodeCorp in any way, but work with barcodes)

Zebra RW420 is printing the ZPL commands to get TID

I am trying to printing TID FROM ZPL COMMANDS
getting JJL179464
can anyone please tell me
what is this character
To partially answer your question:
Are you reading an ASCII encoded data? Because your result: "JJL179464" does not look like a valid RFID tag data, unless it is in ASCII. Data encoded in RFID tags are encoded in binary. Depending on reader settings, the data can be outputed in binary, hexadecimal or ASCII format. Judging by the first three symbols "JJL", your reader is set to output ASCII data, or there is an error in your code.
Try to answer us the following questions:
What are you trying to achieve?
Provide us your code. (whole, structured)
What device are you using to read the RFID tag?
Provide us the settings of your reading device. (unless they are a part of the code)
Do you know the data content of the RFID tag you are trying to read? That means, can you validate that the reading was successful?
Edit:
Thank you for your code:
^XA
^FN1^RFR,H,0,12,2^FS^FH_^HV1,256^FS
^XZ
It seems that there could be several issues in your code.
Firstly, your ^HV command is incomplete. It is missing 3 parameters. The first one (third parameter) sets the data prefix. Next one data termination. And the last one specifies when to return data. You should include all of them in the ^HV command.
There is already a good example how the ^HV command needs to be set:
^RFR,^FN1,^HV1 not sending output to computer
The second issue, at least I think that it is an issue but I don't have the means to verify it, is that you are using ^FH_ command. There are no hexadecimal values for encoding special characters in your code, so there is no point in using it. So I would try to omit it.
Also, I am not sure about the order of commands. The ^FN1 command should be after ^RFR and before ^FS commands.
Try this code:
^XA
^RFR,H,0,12,2^FN1^FS^HV1,256,HEADER,TERMINATION,L^FS
^XZ
That should give you output in format:
HEADERhexadecimaldataTERMINATION
It is a little bit hard to read, but if it will work, then you might proceed to format it nicely.
The words HEADER and TERMINATION serve as prefix and postfix of data from ^RFR command. So if this will work you can replace them with brackets or whatever suits your needs.
I am also concerned about 2 things:
The number of bytes to read - 12. Usually it is 8, but it varies depending on the type of RFID tag and the data format. I don't say that it is a mistake, just unsual to me.
The last parameter in ^HV1 command may be "F" instead of "L". The "F" is default value and it seems that in your case it was working with it. At least you got some output, so maybe it should be "F". But try it with "L" to get a response for each label. "F" means getting a response after the entire job is done.
I hope this will work. Currently we are in lockdown and I don't have the means to verify this on real devices. But theoreticaly it should help.
Please let me know the results.

how to add a separator after each word with ghostscript -sDEVICE=txtwrite

I have used ghostscript to successfully extract text from PDFs that have tables.
This simple command works very well:
gswin64c -sDEVICE=txtwrite -o test.txt "c:\reports\sample.pdf"
However some words get joined together especially from tables, for example:
234801111111109-12-2014 16:17:04764030208117034 2883253100.00 Payment
234801111111109-12-2014 16:18:461088956908117033 2883253400.00 Payment
234801111111109-12-2014 16:19:48769948208117040 2883253750.00 Payment
should actually be:
2348011111111 09-12-2014 16:17:04 764030208117034 2883253 100.00 Payment
2348011111111 09-12-2014 16:18:46 1088956908117033 2883253 400.00 Payment
2348011111111 09-12-2014 16:19:48 769948208117040 2883253 750.00 Payment
Please is there a way to add a separator character at the end of each word.
That would solve this perfectly.
No sorry, this idea simply won't work.
There is no such thing as a 'word' in a PDF file, there is simply a sequence of character codes and positions. The txtwrite code goes to some lengths to try and reconstruct words by looking at the position of each piece of text, and the metrics of the fonts used, but there are no words in the original.
I don't claim this is perfect, if you'd like me to look at it you will need to supply the original file. Best solution is to open a bug report and attach the file to it.
This is still an area I'm looking at, for a different project (RTF output) so now is a good time to report it. I cannot guarantee being able to resolve it, but it may well simply be that the 'rebuild the page layout' code is being too simple-minded about the location of the text.
You can, however, get a lower level output, the XML-like output will give you each fragment of text individually, and its position on the page. You could use that information yourself to rebuild the content.
The default option tries to build a simple representation of the page by using space characters to reproduce the layout of the original, as far as possible, but I have no illusions that there aren't bugs :-)

How to create simple animations in 3gp format?

I am trying to create a simple animation which includes face of a famous character. For example Santa Clause. The face and the lips of the character will act according to the given input message. For example if a string is inputed then the lips of the character will be opened and closed till the end of the string while the given input message is vocalized using a text to speech converter. Moreover if the " :) " is used the character in the animation will smile. How could I do this? I was told that I can create this type of animations using "smill". But this is not convenient for the other purposes therefore I need to use a different method. Could you give me any suggestions?
Not totally sure about if you need only to convert an avi or the like video file to 3gp format, or wish something that involves quite more. If it is the first case, you can try the following free converter :
http://www.videohelp.com/tools/3GP_Converter

Resources