【发布时间】:2020-04-15 22:33:24
【问题描述】:
我正在使用Flutter 包esc_pos_printer 1.5.0 打印到热敏打印机。如果我打印拉丁字符,一切正常。我曾尝试使用多语言代码页,但在尝试打印泰语字符时总是失败。我需要能够用英语、泰语、缅甸语、高棉语和越南语打印。此包中的可用代码页似乎都不支持非拉丁语语言。这对我和其他许多人来说都是一场表演。
II 向打印机发送 ESC 命令以更改代码页,然后按预期打印新的泰文和拉丁字符的代码页。但是,当我尝试打印泰语字符时,我的应用程序崩溃了。
我从调试器收到此错误:
E/flutter (29402): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: Invalid argument (string): Contains invalid characters.: "ยินดีต้อนรับ"
E/flutter (29402): #0 _UnicodeSubsetEncoder.convert (dart:convert/ascii.dart:88:9)
E/flutter (29402): #1 Latin1Codec.encode (dart:convert/latin1.dart:42:46)
这是我的代码:
void _printReceipt(BuildContext context) {
String ip = '192.168.1.100';
Printer.connect(ip, port: 9100).then((printer) {
printer.sendRaw([27, 116, 255]);
printer.printCodeTable();
printer.println('Welcome');
printer.println('ยินดีต้อนรับ');
printer.cut();
printer.disconnect();
}
);
}
编辑:我尝试将字符串编码为字节并像这样打印
_bytes = utf8.encode("ยินดีต้อนรับ");
printer.sendRaw(_bytes);
但我得到了这个
我使用了package suggested below,它适用于泰语。我的 ESC/POS 打印机支持泰语的代码页 96 和 255。 96 做错了,但 255 完成了工作。底部对齐不匹配将是因为打印泰语字符需要 3 遍,并且此字符串不包含底部遍字符。
【问题讨论】:
-
你解决了这个问题@markhorrocks 吗?如果可以,可以分享一下怎么做吗?
标签: flutter thermal-printer codepages