我正在尝试将我的语言字符打印到 POS 打印机。打印机打印效果很好,但结果很糟糕。这是我尝试过的:
using (MemoryStream ms = new MemoryStream())
using (BinaryWriter bw = new BinaryWriter(ms))
{
bw.Write(AsciiControlChars.Escape);
bw.Write('@');
//ESCCMD.RenderBitmap(bw, logo);
bw.Write("Đây là Tiếng Việt");
bw.Write(AsciiControlChars.Escape);
bw.Write('d');
bw.Write((byte)3);
// Feed 3 vertical motion units and cut the paper with a 1 point uncut
bw.Write(AsciiControlChars.GroupSeparator);
bw.Write(AsciiControlChars.V);
bw.Write((byte)66);
bw.Write((byte)3);
bw.Flush();
RawPrinterHelper.SendToSerialPort(ms.ToArray(), txtPortTest.Text, Convert.ToInt32(cbbBaudRate.SelectedValue));
}
那么如何使用 ESC/POS 命令打印我的语言字符呢?
非常感谢!
在打印国际字符之前,您需要检查您的特定型号是否支持相应的代码页,然后使用ESC t
命令。 EPSON 打印机支持的代码页列表和命令语法信息可在此处找到:https://reference.epson-biz.com/modules/ref_escpos/index.php?content_id=32 https://reference.epson-biz.com/modules/ref_escpos/index.php?content_id=32(需要注册)
例如,为了打印希腊语 (ISO-8859-7) 文本,您需要执行以下操作:
private void PrintGreekIsoText(BinaryWriter bw, string text)
{
// ESC t 15
bw.Write("\x1bt\x15");
// Convert the text to the appropriate encoding
var isoEncoding = Encoding.GetEncoding(28597);
var bytes = Encoding.Unicode.GetBytes(text);
byte[] output = Encoding.Convert(Encoding.Unicode, isoEncoding, bytes);
bw.Write(output);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)