微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 NodeJS 将汉字打印到 EPSON TM T88V 的正确方法

如何解决使用 NodeJS 将汉字打印到 EPSON TM T88V 的正确方法

我正在尝试使用带有节点热敏打印机模块的 NodeJS 将汉字打印到热敏收据打印机。

printer1.setCharacterSet('CHINA');

  var str = "   כ所有人生而自由,在尊嚴和權利上一律平等";
  var enc = iconv.encode(str,'CP936');
  console.log (enc);
  var enc1 = iconv.encode(enc,'ISO-8859-1');
  console.log (enc1);

  printer1.println(enc1);
  printer1.partialCut();
  printer1.execute()
  .then(() => {
    console.log('Printing...');
    printer1.clear();
  })
  .catch((err) => {
    console.log(err);
  })

我读过这个答案 Printing simplified Chinese characters on Epson TM-T88IVM 解释说字符串首先必须在 CP936 中编码,然后在 ISO-8859-1 中表示才能正确打印。

我现在得到的只是问号。 字符集或代码页设置不正确吗? 我是否对字符串编码不正确?

如果有人能指引我方向,我将不胜感激。

解决方法

您所指的文章是使用另一种称为OPOS的API时的信息,其中的参考文章似乎是C#中的一般知识。
它们在使用节点热敏打印机时不适用。

在node-thermal-printer的例子中,好像是简单设置字符集后就打印了字符串。
node-thermal-printer/examples/charsets.js

printer.println("Č芚ĆćĐđŽž");
printer.drawLine();
printer.setCharacterSet('PC855_CYRILLIC');
printer.println("Все люди рождаются свободными и равными в своем достоинстве и правах.");
printer.drawLine();
printer.setCharacterSet('JAPAN');
printer.println("すべての人々は自由に生まれ、尊厳と権利において平等です");
printer.drawLine();
printer.setCharacterSet('CHINA');
printer.println("所有人生而自由,在尊嚴和權利上一律平等");
printer.drawLine();
printer.setCharacterSet('PC862_HEBREW');
printer.println("כל בני האדם נולדים חופשיים ושווים בכבוד ובזכויות.");

顺便说一下,为了打印中文/日文/韩文等东亚字符,需要使用包含这些字体的打印机型号。
确保您使用的是可以打印它们的模型。

而且您可能需要将设置工具设置为默认打印中文。
TM-T88V Utility

如果仍然无法打印,为什么不向节点热敏打印机存储库提交问题?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。