如何解决使用 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 举报,一经查实,本站将立刻删除。