Печать на тайском языке

У меня есть приложение, которое распечатывает квитанцию ​​на принтере чеков с помощью ESC / POS. Он должен поддерживать тайский язык.

Когда я попытался распечатать тайский язык, некоторые символы были разделены, как на этой фотографии:

фото

Вот мой код:

printMSG = Command.ESC + "t" + Command.DecimalToCharString(27);
port.Write(printMSG);
var enc = Encoding.GetEncoding("windows-874");
string content = "ข้าวผัดอินโดนีเซียกับเครื่องเทศแบบดั้ง";
byte[] bytes = enc.GetBytes(content);
port.Write(bytes, 0, bytes.Length); 

Понятия не имею. Помогите, пожалуйста. Был бы спасителем жизни.


person Hannim Lee    schedule 31.12.2018    source источник


Ответы (3)


введите описание изображения здесь

Вот картина, которую я описал выше в своих комментариях. Я написал простой цикл For..Next для вывода символов тайской кодовой страницы. На моем рисунке я выделил двойной символ в кодовой странице и номер символа тайского символа.

Кроме того, третья распечатка показывает мой код, распечатывающий тайские предложения с тремя строками для каждого тайского предложения. Первое и третье предложение состоит из трех строк.

person Chi    schedule 08.01.2019
comment
OK. Я полностью понял. Спасибо за вашу помощь!! и я восхищаюсь твоими знаниями. 감사 합니다 - person Hannim Lee; 09.01.2019
comment
Привет, вы не знали, через что мне пришлось пройти, чтобы понять, как печатать тайский с ESC / POS. Я спросил двух производителей принтеров, у них нет образца кода на тайском языке. Я спросил тайских программистов в Facebook, они рассказали мне только о трех пропусках для тайского языка. Я спросил свою тайскую девушку, она не знала. Мне потребовалось три недели, периодически проводя исследования, чтобы научиться печатать на тайском языке с помощью ESC / POS. Однако я все еще не знаю, как печатать на вьетнамском языке с помощью ESC / POS. Я могу печатать на китайском / японском / корейском, но не на вьетнамском. Вы знаете, как это напечатать? - person Chi; 10.01.2019
comment
Извините, я никогда не пробовал вьетнамский. Я работал в KFC в Корее. Надеюсь, ваша проблема скоро решится. - person Hannim Lee; 10.01.2019
comment
@Chi, я сделал POS, который должен поддерживать китайский, тайский и вьетнамский для пунктов меню, и сильно ударил головой, поддерживая их все, используя командный режим плюс аппаратно поддерживаемое кодирование. Ничего не работает достаточно хорошо, мое окончательное решение - распечатать все в Bitmap и распечатать растеризованные данные. - person Chinh Nguyen; 10.01.2019

Тайский язык называется трехступенчатым. Это означает, что верхняя, средняя и нижняя строки печатаются отдельно.

Например, รื่ имеет верхний и средний символы, вы должны печатать их на каждой строке, с вашего изображения они печатаются внизу, следовательно, как верхняя строка.

В другом примере ดั้, имеет символы с двойной вершиной, вам нужно найти этот символ на кодовой странице.

Есть и другие нижние символы, они будут напечатаны вверху, следовательно, в нижней строке.

Проведите небольшое тестирование, вы получите это.

person Chi    schedule 05.01.2019
comment
Я не знаю, что означает эта строка. В другом примере ดั้, имеет двойные верхние символы, вам нужно найти этот символ на кодовой странице. - person Hannim Lee; 08.01.2019
comment
Символ ดั้ состоит из трех символов, как показано на вашей распечатке! Два верхних символа и 1 средний символ ด. Чтобы напечатать два верхних символа как один символ, вам нужно найти тот же двойной символ в коде вашего принтера для тайского языка. Моя кодовая страница термопринтера для тайского языка - 255, а ваша - 27. - person Chi; 08.01.2019
comment
Я написал простой код For Next для распечатки всей тайской кодовой страницы для моего принтера, и как только вы сделаете то же самое, вы сможете увидеть, как искать двойные символы как один символ. Я не могу добавить картинку, иначе вы увидите, как я это сделал! - person Chi; 08.01.2019

Для печати в командном режиме потребуется поддержка оборудования (в моем случае Star Micronics). Я столкнулся с той же проблемой и смог решить ее, только растеризовав весь контент в Bitmap, а затем распечатав все Bitmap.

person Chinh Nguyen    schedule 05.01.2019
comment
Уменьшает ли скорость печати печать всего растрового изображения? - person Hannim Lee; 08.01.2019
comment
Более-менее то же самое! Никаких претензий к скорости печати от пользователей я не получал, поэтому времени на анализ не тратил. - person Chinh Nguyen; 08.01.2019
comment
Да, моим первым решением тоже было использование графического решения, которое может печатать все языки, поддерживаемые окнами на кухне. Но счет должен быть на английском языке, шрифт Windows не очень хорошо смотрелся в счете на английском языке, но использование ESC / POS значительно улучшило внешний вид счета на английском языке. - person Chi; 10.01.2019
comment
В чем заключалась плохая черта счета на английском языке? У нас была проблема с монофоническим шрифтом, в командном режиме используется монофонический шрифт, что упрощает разметку содержимого. Я попытался применить монофонический шрифт к растровому изображению, и проблема была решена. Пример изображения можно найти здесь - person Chinh Nguyen; 10.01.2019
comment
Мне нравится распечатка вашего счета. Очень красивая планировка. Стандартный шрифт Epson ESC / POS - FontA11, который выглядит нормально и идентично другим счетам / квитанциям из другого программного обеспечения. - person Chi; 11.01.2019
comment
Разместите печать в библиотеке с помощью Swift (позже получите C # на nuget), которую можно найти здесь. Надеюсь, это может быть полезно другим. - person Chinh Nguyen; 18.02.2019