我需要在Zebra M4Plus打印机中将“日期字段”编码为UTF-8到UTF-16。为此,我需要使用“必需的翻译表”。在文档中我发现了这个:
~DER:JIS.DAT,27848,300021213001...
但我不知道什么是JIS.DAT以及为什么27848。
这是我的代码示例:
qz.append("^XA");
qz.append("^FO160,635");
qz.append("^A@R,30,30,E:TT0003M_.FNT");
qz.append("~DER:.DAT,27848,Данные для вывода^FS"); - it not work. Printer go to offline.
谁有这方面的经验,请帮助。
答案 0 :(得分:1)
ZPL手册(第171页)解释了此命令正在下载转换表以帮助将字体转换为unicode:ZPL manual。数字(27848)是字体可下载格式的大小。这些表格可以作为您的字体包的一部分在Zebra's Website下载。你试图用什么字体?
此外,虽然这不能解决打印机关闭的问题,但您应该使用“^ XZ”结束ZPL命令。这是打印机用来表示标签/作业/命令结束的命令。
答案 1 :(得分:1)
请尝试强制Java小程序使用Cyrilic:qz.setEncoding("cp1251");
或qz.setEncoding("windows-1251");
,除非打印机原生支持UTF-16,然后qz.setEncoding("UTF-16");
更新:在较新版本的QZ Tray中,语法为qz.configs.create("My Printer", { encoding: 'UTF-8' });
另外,请务必在网页中定义<meta charset="utf-8">
。
修改:这里有详细解释原因:Printer ZebraZ4MPlus don't print Russian Cirillyc character
Java习惯假设您要使用哪个字符集,通常是cp1252(Windows)或UTF-8(* nix)。根据打印机所期望的编码(以及它支持的编码),Java首先需要在发送之前将这些字符/命令转换为合适的等价物。可以使用Java 7支持的完整编码列表here。
关于希腊字符支持的qz bug跟踪器提出了一个非常类似的问题。诀窍是告诉Java以及打印机使用哪种语言/字符编码。
最后,我遇到了html / js文件上的BOM标记(字节顺序标记)导致不良结果的情况。在这种情况下,JavaScript在发送到Java之前就知道文档的编码和转换。我使用Notepad ++来打开/关闭UTF-8 BOM。
此外,这里是qz错误报告的链接,该报告涉及不同的打印语言(ESCP而不是ZPL),但是有类似的症状,Java的输出被错误地转换为他的打印机。 https://code.google.com/p/jzebra/issues/detail?id=204#c10
-Tres
答案 2 :(得分:0)
jason.zissman,感谢关于新文档的链接。我找到编码CI28。我从JSP发布(&lt;%@ page contentType =“text / html”pageEncoding =“UTF-8”%&gt;)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 - 不起作用。