打印机Zebra Z4MPlus不打印俄罗斯西里尔字符

时间:2014-01-13 15:14:52

标签: javascript printing zebra-printers

我尝试使用applet“qz-print”从JavaScript打印一些俄语文本。我的js代码:

                if (qz !== null) {
                    qz.append("^XA");
                    qz.append("^CWX,E:TT0003M_.FNT^FS");
                    qz.append("^CI29");
                    qz.append("^LH5, 80");
                    qz.append("^FO160,220^AUR,5,10^FD" + Черноморец + "^FS");
                    qz.append("^XZ");
                    qz.print();
                }

在此变体中,我使用zpl编码CI29。但是我的打印机在此代码后离线...帮助只重新启动计算机和打印机。

当我发送下一个代码时 - 一切正常:

                    qz.append("^XA");
                    qz.append("^LH5, 80");
                    qz.append("^FO120,110^ATR,5,10^FD" + Черноморец + "^FS");
                    qz.print();

但打印机打印奇怪的字符而不是“Черноморец”,类似于KOI8-R。

谁知道怎么用俄语打印?

3 个答案:

答案 0 :(得分:1)

请看这个主题: Encoding date in Zebra printer

解决方案是4部分,其中包括:

  1. 正确的翻译表(特殊ZPL命令),例如^CI17^CI14
  2. 要编码的JavaScript文件的文档编码UTF-8如果要直接使用Unicode字符(可选择使用Unicode转义格式,但对于大多数程序员来说,不需要它,因为.js文件已经是UTF-8默认情况下)
  3. 告诉Java(在本例中为qz)使用正确的编码。对前一个人有用的是qz.setEncoding("UTF-16");,尽管CP-1251 也可以取得成功。 更新:在较新版本的QZ Tray中,语法为qz.configs.create("My Printer", { encoding: 'UTF-8' });
  4. 如果数据来自服务器(AJAX等),请确保该内容的默认输出也正确配置(Apache,PHP等)。 http://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q8
  5. 这使得特别困难的是字符翻译和字体可以在不知情的情况下切换三次。


    首次编码问题

    JavaScript将默认为.js文件本身的编码(通常为UTF-8,但在许多其他文件中可以是ANSI。Notepad ++将从“编码”菜单选项中显示此内容。)


    第二次编码问题

    Java将在内部使用UTF-16,但在没有任何警告的情况下,Java将在写入“raw”时进行字符转换,在Windows上将转换为CP-1252,丢弃许多UTF- 16个字符。仅当编码具有可映射的字符时(即CP-1251具有许多可以与Unicode良好映射的西里尔字符),此转换非常好。出于这个原因,qz故意回显日志中有关默认编码的消息,如果在Java控制台中,您应该看到它,一旦激活: INFO: Current printer charset encoding: windows-1252


    第三次编码问题

    根据我的经验,大多数打印机都支持西里尔语,但根据打印机的使用年限,可能需要兼容的代码页或上传的字体等,这些都是供应商特有的。在收据打印机的情况下,代码页非常不一致。幸运的是,Zebra为这些问题提供了出色的技术支持和快速周转。


    我们如何解决这个问题

    对于上面链接的线程,Zebra开发人员(Jason)帮助了打印机部分,QZ开发人员(我自己)帮助了Java部分。杰森直接给我发了电子邮件,以帮助解决这个问题。

    我希望这个解释可以帮助你和许多其他人。如果它解决了您的问题,请将此主题标记为已解答,如果您对原始打印有其他疑问,请联系qz社区支持。

    -Tres

答案 1 :(得分:0)

我有一本旧书。但启动^ CI29的行可以尝试更改为^ CI17(Unicode)或^ CI14(16位Unicode编码字体)。

您可能还需要使用Zebra网站上的Z-tools获取字体并手动将它们添加到打印机。祝你好运。

答案 2 :(得分:0)

我发现编码CI28。我从JSP发布(<%@ page contentType =“text / html”pageEncoding =“UTF-8”%>)js-code:

qz.append("^XA");
qz.append("^CWX,E:TT0003M_.FNT^FS");
qz.append("^CI28");
qz.append("^FO50,400^AX,80,70^FDCyrillic: ЖЛЗ^FS");
qz.append("^XZ");
qz.print();

但是打印机只打印“Cyrilic:”。有什么问题?求助,谁知道。 当我从文件中打印这个代码时 - 一切都很好,而且从jsp开始 - 不起作用。