将Unicode字符打印到POS打印机



我正在尝试将我的语言字符打印到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(需要注册)

例如,为了打印希腊语(ISO-8859-7)文本,您需要执行以下操作:

private void PrintGreekIsoText(BinaryWriter bw, string text)
{
    // ESC t 15
    bw.Write("x1btx15");
    // 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);
}

相关内容

  • 没有找到相关文章

最新更新