В настоящее время вы можете попробовать изменить приведенную ниже спецификацию кодирования с utf-8 на cp865 .
rawdata = bytes('Print æ,ø,å', 'utf-8') + b'\n' + b'\x1d\x56' + six.int2byte(66) + b'\x00' #print
Если это не сработает, следует прекратить использование win32print и переключиться на pyserial.
Также необходимо переключить режим принтера, удалить расширенный драйвер принтера и установить серийный принтер драйвер порта.
Затем прикладная программа должна создать все данные печати, используя необработанные команды ESC / POS.
Причина в следующем.
Вы можете получить расширенный драйвер принтера для TM-T20II и руководство и образец программы здесь.
EPSON Расширенный драйвер принтера для TM-T20II
В соответствии с примером программы «Шаг 1« Печать шрифта устройства »», чтобы отправить необработанную команду ESC / POS на принтер, необходимо выбрать определенный c шрифт устройства.
Печать «Hello APD» со шрифтом устройства и автоматическая проверка квитанции.
Ядро исходного кода в C ++ выглядит следующим образом.
CDC dc;
/*
* Create the device context for the printer
*/
if(! dc.CreateDC(EPS_DRIVER_NAME, EPS_PRINTER_NAME, NULL, NULL) )
{
AfxMessageBox(_T("Printer is not available."));
return;
}
dc.StartDoc(&di);
/*
* Perform the printing of the text
*/
CFont font, *old;
font.CreatePointFont(95, "FontA11", &dc);
old = dc.SelectObject(&font);
dc.TextOut(20, 10, "Hello APD!");
dc.SelectObject(old);
font.DeleteObject();
dc.EndPage();
dc.EndDoc();
dc.DeleteDC();
Вот как это выглядит в VB.
Dim printFont As New Font("Lucida Console", 8, FontStyle.Regular, GraphicsUnit.Point) ' Substituted to FontA Font
e.Graphics.PageUnit = GraphicsUnit.Point
' Print the string at 6,4 location using FontA font.
e.Graphics.DrawString("Hello APD!", printFont, Brushes.Black, 6, 4)
' Indicate that no more data to print, and the Print Document can now send the print data to the spooler.
e.HasMorePages = False
Разве это не очень трудно или невозможно перенести их на win32print Python?
API win32print, похоже, не может настраивать шрифты в середине печати.
Модуль win32print
И StartDocPrinter и WritePrinter имеют следующее объяснение.
win32print.StartDocPrinter
Обратите внимание, что драйвер принтера может игнорировать запрошенный тип данных.
win32print.WritePrinter
Подходит для копирования raw Postscript или HPGL файлов на принтер ,
Команда ESC / POS не является необработанным PostScript или HPGL, и расширенный драйвер принтера EPSON не обязательно отправляет такие данные с вызовом win32print.