Barcode Human Readable Text ( Interpretation Line) masking in ZPL II - textfield

I am trying to make a ZPL Label with Code 128. My issue is that I would like to alter the human readbale interpretation line under the barcode. Normally, it gets printed as what it is encoded, i want to add spaces after 5 characters (as picture).
enter image description here
I was able to do it in Zebra designer but we have to store the label as ZPL and if I export the .prn file it gets encrypted and i get always the same barcode printed, which in my case is not correct.
I tried to turn off BC interpretation line and used ^FN to print interpretation line and do some formatting on it but after going through internet and ZPLII manuals , I am unable to find anything.
content of .prn file, i am getting:
CT~~CD,~CC^~CT~
^XA
~TA000
~JSN
^LT0
^MNW
^MTT
^PON
^PMN
^LH0,0
^JMA
^PR4,4
~SD15
^JUS
^LRN
^CI27
^PA0,1,1,0
^XZ
^XA
^MMT
^PW2457
^LL1200
^LS0
^FO652,258^GFA,2573,46768,148,:Z64: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:AC0D
^PQ1,0,1,Y
^XZ

Related

ZPL Script for barcode GS1-128 issue

Using ZPL script, I have to generate a barcode with GS1-128 (formally known as Code 128, UCC/EAN 128).
The problem is, it is generating barcode but a number is not correct from the middle of the barcode.
^XA
^FO15,280
^BY3,2:1
^BCR,100,Y,Y,Y,D
^FD(01)90717497100536(3202)0090(11)210716(21)9000000014^FS
^XZ
But in output, it generates a barcode (01)90717497100535(3202)0090(11)210716(21)9000000014
535 instead of 536.
Any idea?
It is fixed by adding additional zero to start.
Ref: https://stackoverflow.com/a/68502657/323917
^XA
^FO15,200
^BY3,2:1
^BCR,100,Y,Y,Y,D
^FD(01)00090717497100536(3202)0090(11)210716(21)9000000014^FS
^XZ
You have wrongly calculated check digit - it is 5 as printer corrects you. This correction may be turned off, but I am not sure about that and I would never recommend turning it off. GTIN with wrong check digit is not valid. To wrap it up, the generated code is correct, just check your input GTINs to see if they have correct check digits.

Custom Speech: "normalized text is empty"

I uploaded a wav and text file to the custom speech portal. I got the following error: “Error: normalized text is empty.”
The text file is UTF-8 BOM, and is similar in format to a file that did work.
How I can trouble-shoot this?
There can be several reasons for a normalized text to be empty, e.g. if there are words of Latin and non-Latin characters in a sentence (depending on the locale). Also, words that are repeated multiple times in a row may cause this. Can you share which locale you're using to import the data? If you could share the text we can find the reason. Otherwise you could try to reduce the input text (no need to cut the audio for this) to find out what causes the normalization to discard the sentence.

Combine SQL files with command `copy` in a batch file introduce an incorrect syntaxe because it does add an invisible character `U+FEFF`

In a pre-build event, a batch file is executed to combine multiple SQL files into a single one.
It is done using this command :
COPY %#ProjectDir%\Migrations\*.sql %#ProjectDir%ContinuousDeployment\AllFilesMergedTogether.sql
Everything appear to work fine but somehow the result give an incorrect syntaxe error.
After two hours of investigation, it turn out the issue is caused by an invisible character that remain invisible even with notepad++.
Using an online website, the character has been spotted and is U+FEFF has shown in following image.
Here are the two input scripts.
PRINT 'Script1'
PRINT 'Script2'
Here is the output given by the copy command.
PRINT 'Script1'
PRINT 'Script2'
Additional info :
Batch file is encoded with UTF-8
Input files are encoded with UTF-8-BOM
Output file is encoded with UTF-8-BOM.
I'm not sure it is possible to change the encoding output of command copy.
I've tried and failed.
What should be done to eradicate this extremely frustrating parasitic character?
It has turned out that changing encoding of input files to ANSI does fix the issue.
No more pesky character(s).
Also, doing so does change the encoding of the result file to UTF-8 instead of UTF-8-BOM which is great I believe.
Encoding can be changed using Notepad++ as show in following picture.

Is there a flag that tells Zebra printers to include the check digit in the textual representation of a barcode?

I am sending CPCL commands from a handheld device to a Zebra QL220 printer to print barcode labels. It seems that when the barcode prints, the barcode value is correct (it incorporates/appends the check digit to the machine-readable swath of vertical black (and/or white) stripes), but the check digit is not incorporated/appended to the Text representation (below the barcode).
IOW, the barcode may represent "123456789014" but the text value is "12345678901" (it's lacking the check digit).
Is there an easy way to "turn this on," such as via one of the flags sent to the printer via CPCL, or will I have to manually manipulate the Text value to display the check digit appended to the barcode?
Looking through the CPCL manual (page 5.17: https://support.zebra.com/cpws/docs/comtec/PROMAN-CPCL_RevY.pdf ) and the ZPL manual (https://support.zebra.com/cpws/docs/zpl/zpl_manual.pdf), there appears to be no documented command flag that will cause a printer to print the checksum in the barcode interpretation line. I think you will have to include it yourself.

Encoding issue in I/O with Jena

I'm generating some RDF files with Jena. The whole application works with utf-8 text. The source code as well is stored in utf-8.
When I print a string contaning non-English characters on the console, I get the right format, e.g. Est un lieu généralement officielle assis....
Then, I use the RDF writer to output the file:
Model m = loadMyModelWithMultipleLanguages()
log.info( getSomeStringFromModel(m) ) // log4j, correct output
RDFWriter w = m.getWriter( "RDF/XML" ) // default enc: utf-8
w.setProperty("showXmlDeclaration","true") // optional
OutputStream out = new FileOutputStream(pathToFile)
w.write( m, out, "http://someurl.org/base/" )
// file contains garbled text
The RDF file starts with: <?xml version="1.0"?>. If I add utf-8 nothing changes.
By default the text should be encoded to utf-8.
The resulting RDF file validates ok, but when I open it with any editor/visualiser (vim, Firefox, etc.), non-English text is all messed up: Est un lieu généralement officielle assis ... or Est un lieu g\u221A\u00A9n\u221A\u00A9ralement officielle assis....
(Either way, this is obviously not acceptable from the user's viewpoint).
The same issue happens with any output format supported by Jena (RDF, NT, etc.).
I can't really find a logical explanation to this.
The official documentation doesn't seem to address this issue.
Any hint or tests I can run to figure it out?
My guess would be that your strings are messed up, and your printStringFromModel() method just happens to output them in a way that accidentally makes them display correctly, but it's rather hard to say without more information.
You're instructing Jena to include an XML declaration in the RDF/XML file, but don't say what encoding (if any) Jena declares in the XML declaration. This would be helpful to know.
You're also not showing how you're printing the strings in the printStringFromModel() method.
Also, in Firefox, go to the View menu and then to Character Encoding. What encoding is selected? If it's not UTF-8, then what happens when you select UTF-8? Do you get it to show things correctly when selecting some other encoding?
Edit: The snippet you show in your post looks fine and should work. My best guess is that the code that reads your source strings into a Jena model is broken, and reads the UTF-8 source as ISO-8859-1 or something similar. You should be able to confirm or disconfirm that by checking the length() of one of the offending strings: If each of the troublesome characters like é are counted as two, then the error is on reading; if it's correctly counted as one, then it's on writing.
My hint/answer would be to inspect the byte sequence in 3 places:
The data source. Using a hex editor, confirm that the é character in your source data is represented by the expected utf-8 hex sequence 0xc3a8.
In memory. Right after your call to printStringFromModel, put a breakpoint and inspect the bytes in the string (or convert to hex and print them out.
The output file. Again, use a hex editor to inspect the byte sequence is 0xc3a8.
This will tell exactly what is happening to the bytes as they travel along the path of your program, and also where they deviate from the expected 0xc3a8.
The best way to address this would be to package up the smallest unit of your code that you can that demonstrates the issue, and submit a complete, runnable test case as a ticket on the Jena Jira.