在Zebra打印机中编码日期

时间:2014-01-14 13:03:27

标签: javascript encoding printing zebra-printers

我需要在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.

谁有这方面的经验,请帮助。

3 个答案:

答案 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 - 不起作用。