How to print with win-1250 codepage on zebra printer?

Adrian Serafin picture Adrian Serafin · Jan 12, 2011 · Viewed 6.9k times · Source

I have this code for printing with Zebra printer (RW 420 to be specific)

StringBuilder sb = new StringBuilder();            
sb.AppendLine("N");            
sb.AppendLine("q609");
sb.AppendLine("Q203,26");
//set printer character set to win-1250
sb.AppendLine("I8,B,001");
sb.AppendLine("A50,50,0,2,1,1,N,\"zażółć gęślą jaźń\"");
sb.AppendLine("P1");

printDialog1.PrinterSettings = new System.Drawing.Printing.PrinterSettings();
if (printDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
    byte[] bytes = Encoding.Unicode.GetBytes(sw.ToString());
    bytes = Encoding.Convert(Encoding.Unicode, Encoding.GetEncoding(1250), bytes);                
    int bCount = bytes.Length;
    IntPtr ptr = System.Runtime.InteropServices.Marshal.AllocCoTaskMem(bCount);
    System.Runtime.InteropServices.Marshal.Copy(bytes, 0, ptr, bytes.Length);
    Common.RawPrinterHelper.SendBytesToPrinter(printDialog1.PrinterSettings.PrinterName, ptr, bCount);
}

RawPrinterHelper is class from Microsoft that I got from here.

My problem is that only ASCII characters are printed like this:

za     g  l  ja  

Non-ASCII characters are missing.

Funny thing is that when I open Notepad and put the same text in there and print it on Zebra printer all characters are ok.

Answer

Hans Passant picture Hans Passant · Jan 12, 2011

The difference is that Notepad is using the printer driver, you are bypassing it. Zebra printers have some support for using its built-in fonts. It's got character sets for codepage 950 and something it calls "Latin 1" and "Latin 9". Key problem is that none of them contain the glyphs you need. The printer driver solves this problem by sending graphics to the printer, not strings. The programming manual is here btw.

I would imagine that these printers have some kind of option to install additional fonts, hard to make the sale in the rest of the world if that wouldn't be the case. Contact your friendly printer vendor for support and options.