Printing arabic text using Zebra printer [ZPL] - printing

As the title says Is there any option to print the arabic content ZPL Printer.
Thing tried is adding the font and initiate the print
^XA ^FX ^FR ^CF0,40^CI28^FO130,45^FH^FD محاكمة Font file^FS ^XZ
My printer has TT0003M_.TTF font installed but it shows "????" when i tried to print arabic using
^XA^FO50,50^AE:TT0003M_.TTFN,50,50^FDمحاكمة^FS ^XZ
Any idea how to install a font and print the arabic text using ZPL language?

^XA^CI28^CW1,E:TT0003M_.TTF^LL130^FS
^PA0,1,1,1
^FO50,50^A1N30,30^FDمحاكمة‏
^FS
^XZ
Updated this answer to match the other question
Also found this on the Zebra KB - https://km.zebra.com/kb/index?page=content&id=SO6820&actp=RSS

Maybe it is too late to answer your question :) but I have the same issue and I solve it so I want to share my answer.
1- You can use ZebraDesigner 3 or "BarTender Designer" to design your ZPL code.
2- Use this font ZEBRA Swiss Unicode, it support Arabic characters.
3- After finish your design click Print and check the box "Print to file" then click Print and save the file with extension ".prn".image
4- Open the file using notepad and you will see the ZPL code.
5- Here is the result
^FPH,3^FT225,224^A#N,141,141,TT0003M_^FH\^CI28^FDمحاكمة^FS^CI27
Or the full result in this image.
6- If you are using online zpl viewer like this don't worry if you can't see the Arabic characters, but if you want to print you will not see any problems
7- Don't try to make your text in the center ,usin this will cut and reverse the Arabic text
The default is Field Text > "^FT"or with x,x"^FTx,y" "^FT225,224" like in this code:
^FPH,3^FT225,224^A#N,141,141,TT0003M_^FH\^CI28^FDمحاكمة^FS^CI27
If you try to center,right or left your Arabic text it will use Field Block "^FB" "^FB383,1,75,C" it is different than "^FT" and it is not supporting Arabic text.
^FPH,3^FT225,224^A#N,141,141,TT0003M_^FB383,1,75,C^FH\^CI28^FDمحاكمة^FS^CI27
you can see Field Block properties in this book at page 169
8- I'm not sure but I tried very hard and there is no way to center the arabic text until now.
But I have a trick using ^FT width to calculate the center
Using this function ,it is c#:
//Define page_width and font_width
int page_width = 600;
int font_width = 18;
call the function it will return X position (center).
string ar = "محاكمة محاكمة محاكمة";
string FT_center = center_line(ar);
here is the function, 315 = middle width or center point
public string center_line(string arabic_text)
{
int text_width = (arabic_text.Length * font_width) / 2;
decimal d = ((page_width - (text_width / 2)));
int x = Convert.ToInt16(Math.Round(d)) ;
x = 315 + (text_width / 2);
return x.ToString();
}
use it like this:
^FPH,3^FT"+FT_center+#",224^A#N,141,141,TT0003M_^FH\^CI28^FDمحاكمة^FS^CI27

Related

Zebra printer ZT610 doesn't print polish signs while ZTC 110 does

I am trying to print polish signs with font Verdana ( contains polish signs). The problem is that on the printer ZTC 110 code :
^XA
^FS
^CWZ,E:VERDANAB.FNT^FS
^FT100,100^FH^FD żółć
^XZ
works perfectly fine and polish signs are printed , while on the new printer ZT610 polish letters are missing (font was downloaded properly with .TTF format). All I can see in a place of sign is a blank space. When I m using zebra designer 2 polish letters are printed, they also are printed when I add command ^CI28 to the code ( used ^FH^FD here and special utf 8 code for polish signs),
^XA
^CI28
^FS
^CWZ,E:VERDANAB.TTF^FS
^FT100,100^FH^FD _C5_BC_C3_B3_C5_82_C4_87_C5_B9 ( żółć // here is the blank space )
^XZ
but it worked on previous printer without doing those things. Drivers were installed properly, fonts were installed properly, any ideas why is it happening?

Can' t print Greek characters (1253 or 737) with citizen ct-s651ii embed font with Delphi 10.3

I 'm trying to print some text with Greek and Latin characters to a citizen ct-s651ii thermal pos printer using the embedded Font-A font with Delphi 10.3 Rio.
It prints the latin characters but instead of the Greek characters it prints dots (".").
I have set with the citizen pos printer utility the code page to "Space page user fonts" and i have register the wpc1253.cgh font (also tried the pc737.cgh).
I'm not sending esc commands.
I use this code:
Printer.BeginDoc;
Printer.Canvas.Font.Name := 'FontA11 [255]';
Printer.Canvas.TextOut(0,0, 'ΑΒΓΔΕ');
Printer.EndDoc;
From the pos printer utility the "test print" function prints some code pages and it prints the "user define Font-A" code page with the Greek characters without problem.
I'm using the same method and code with an Epson tm-t88v printer without a problem.
Is the citizen printer handling different the textout commands or am i doing something wrong?
Looking at the documentation, this printer supports the following code pages: Alphanumeric, International characters, Katakana, Thai code18, WPC1252, 437, 850, 852, 857, 858, 860, 863, 864, 865 and 866
Locate the characters you want to print in one of those code pages and select it.
If this doesn't work, you can always print the ticket to a bitmap and then print the bitmap. Using this method, you can use any font supported by Windows, regardless of what the printer supports.

need to print greek characters from zpl ii commands using a zebra printer

i have problem printing greek characters to a Zebra GC420 desktop printer. My code is:
$printarr[] = '^XA^CWZ,E:TT0003M_.FNT^FS^XZ^XA^FWN^FO70,50^A0,30,25^FH^FD'.labels_utf8_parse($name).'^FS^FO70,90^BY2^B3,,100^FD' . $node->field_o['und'][0]['value'] . '^FS^XZ';
What am i doing wrong? Instead of greek letters i get crosses. The strange part is that in another area of the code,the below code prints correctly greek characters:
$toprint = '^XA^CWZ,E:TT0003M_.FNT^FS^XZ^XA^FWR';
What should i do, how should i proceed to see what is the problem and how could i solve it?
You need to set the character encoding to UTF-8 using ^CI28. Put it near the top of the format, for example, after the ^XA^FWN.

Whole text not exported in pdf using aspose word template

I have a scenatio to export a 25000 characters text , which is does not have any space break between character. it mean single word with 250000 length . but realtime a word length cannot be more then 25. Anyhow the text should have exported into pdf using Aspose word template. but it doesnot export 25000 length , instead export 4578 characters into pdf , remaining are discarded in pdf. but i could get the 25000 length character in my code before calling that pdf export method using aspose.
But the text are properly exported into pdf , if you give positive scenario text upto any characters length .
Let me know, is there any solution why the text are discarded , if gives contineous text without break?
Please use CompatibilityOptions.GrowAutofit property as shown below to get the desired output.
Document doc = new Document(MyDir + "SupervisionReportTemplate - Copy.docx");
DataTable table = new DataTable("SupervisorComment");
table.Columns.Add("GeneralVisitComment", typeof(string));
var newRow = table.NewRow();
newRow["GeneralVisitComment"] = File.ReadAllText(MyDir + "25000 contineous character length.txt", Encoding.Unicode);
table.Rows.Add(newRow);
doc.MailMerge.ExecuteWithRegions(table);
doc.CompatibilityOptions.GrowAutofit = true;
doc.Save(MyDir + "18.4.docx");
I work with Aspose as Developer Evangelist.

printfn not producing expected results for international (non-latin) characters

I have the following program:
let txt = "إتصالات"
printfn "Text is: %s" txt
0 // return an integer exit code
The value of txt is being set to some Arabic characters. When I run the program what is being displayed on the console is a bunch of question marks rather than the characters. In the Visual Studio 2012 debugger the correct characters are being displayed for the txt variable.
What am I doing wrong and how does one properly display international characters?
According to How to write unicode chars to console? you need to set the OutputEncoding property on the console, like this:
System.Console.OutputEncoding <- System.Text.Encoding.Unicode
let txt = "إتصالات"
printfn "Text is: %s" txt
0 // return an integer exit code
The answer for that question is worth reading though, because it also describes why you need to change your console font to really make this work, and also how to do it.
Here are some additional links with more information:
Necessary criteria for fonts to be available in a command window (this is for Windows 2000 and may not entirely apply to Windows 8, but it should give you a good idea of what to look for in a font).
Windows Console and TrueType Fonts shows how to add new fonts to the console.
Anyone who says the console can't do Unicode isn't as smart as they think they are has some background information about writing Unicode text to the console.
Update: Since the Arabic text in the example renders just fine here on StackOverflow, I peeked at the CSS to see which fonts they're using to render preformatted text. Using that list and the Windows Character Map tool (Start -> All Programs -> Accessories -> System Tools -> Character Map), I've found the Courier New font (which ships with Windows) supports Arabic characters. If you use the registry hack in the "Windows Console and TrueType Fonts" link (above), you should be able to add Courier New as a font you can use in the console.

Resources