Drucken mit win-1250 Zeichensatz auf zebra-Drucker an?
Ich habe diesen code für das drucken mit Zebra-Drucker (RW 420 um genau zu sein)
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
ist Klasse von Microsoft, dass ich von hier.
Mein problem ist, dass nur ASCII-Zeichen gedruckt wie dieses:
za g l ja
Nicht-ASCII-Zeichen fehlen.
Lustige an der Sache ist, dass, wenn ich öffnen Sie den Editor und setzen Sie den gleichen text in es und drucken Sie es auf Zebra-Drucker alle Zeichen sind ok.
- Es klingt wie ein encoding-Problem. Sie haben versucht, die Umstellung auf eine andere Kodierung wie UTF-8 oder ISO-8859-1?
- Fehlende Zeichen sind polnische Zeichen von win-1250 oder iso-8859-2 Zeichensätze und ich habe versucht, sowohl in der Kodierung.Convert-Methode...
- Könnten Sie verwalten, um das Problem zu beheben? Gleiche problem hier.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der Unterschied ist, dass Notepad ist mit dem Drucker-Treiber, Sie umgehen es. Zebra-Drucker haben einige Unterstützung für die Verwendung der integrierten Schriften. Es hat Zeichensätze codepage 950 und etwas, was es fordert, "Latin-1" und "Latin-9". Zentrales problem ist, dass keiner von Ihnen enthalten die Glyphen, die Sie benötigen. Die Drucker-Treiber löst dieses problem durch senden von Grafiken an den Drucker, keine Zeichenfolgen. Das Programmier-Handbuch hier btw.
Ich könnte mir vorstellen, dass diese Drucker haben eine Art von option für die Installation von zusätzlichen Schriftarten, die schwer zu machen, den Verkauf in den rest der Welt, wenn das nicht der Fall sein. Kontaktieren Sie Ihre freundliche Drucker-Hersteller für Unterstützung und Optionen.
Fand ich mit Wireshark das charset von ZebraDesigner ist UTF-8, damit versuchen Sie zu konvertieren von string zu byte[] als utf-8
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(sw.ToString());
Tschechische chars wie ěščřžýáíé ist jetzt OK
Wenn Sie brauchen, um eigene Zeichen an den Drucker, nehmen Sie einen Blick auf die patch ich für SharpZebra. Es sollte trivial sein, um es zu ändern zum hinzufügen von Unterstützung für diejenigen, die fehlenden Buchstaben.
Hinzugefügt habe ich eine helper-Methode an meine Klasse, die konvertieren zu einem string (der ist standardmäßig
UTF-16
) in eineUTF-8
codiertbyte[]
und dann drucken.