1

我从 Web 服务收到一个字符串,我想在 ESC/POS 打印机上打印它。我试过这个:

private void print()
{
    PrintService ps = getPrinter(deviceSystemName);
    byte[] commandByteArray = decodeReceiptCommandString();
    DocFlavor df = DocFlavor.INPUT_STREAM.AUTOSENSE;
    ByteArrayInputStream pis = new ByteArrayInputStream(commandByteArray);

    Doc d = new SimpleDoc(pis, df, null);
    if (ps != null) {
        DocPrintJob job = ps.createPrintJob();
        job.print(d, null); 
    }
}

private byte[] decodeReceiptCommandString()
{
    String encoding = "Cp850";
    String commandString = new String(this.receipt.getString("stringa"));
    return commandString.getBytes(encoding);
}

这在意大利系统中运行良好,但是当我在客户的西班牙打印机上打印时,结果就不一样了。

我的工作打印:

在此处输入图像描述

在我客户的打印机上打印:

在此处输入图像描述

我的打印机的协议和字符集与我的客户打印机相同。

出了什么问题,我该如何解决?

4

1 回答 1

0

我找到了一个可以提供帮助的解决方案。您应该找到您的打印机在发送字节时实际打印的字符。

我在一台 ESC POS HASAR 180 打印机上对此进行了测试,我意识到字符的顺序非常奇怪,根本没有标准。

带字符的票

这是我的代码:

static byte[] PrintChars() {
    StringBuilder sb = new StringBuilder();
    for (int i = 33; i < 256; i++)
    {
        sb.Append((char)i + "-");
    }
    sb.Append("\n");
    return Encoding.UTF8.GetBytes(sb.ToString());
}
于 2021-11-12T17:41:55.317 回答