У меня есть этот код для печати с Зебра принтера (RW 420, чтобы быть конкретным)Как печатать с кодовой страницей win-1250 на принтере зебры?
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
является класс от Microsoft, которые я получил от here.
Моя проблема заключается в том, что только символы ASCII печатаются так:
za g l ja
Non-ASCII символы отсутствуют.
Забавно, что когда я открываю Блокнот и помещаю туда же текст и печатаю его на принтере Zebra, все символы в порядке.
Это звучит как проблема с кодировкой. Вы пробовали конвертировать в другую кодировку, например UTF-8 или ISO-8859-1? –
Отсутствующие символы - это лаковые символы из кодировок win-1250 или iso-8859-2, и я пробовал оба метода Encoding.Convert ... –
Не могли бы вы устранить проблему? Та же проблема здесь. – Mori