Форум сайта python.su
Добрый день всем.
Такая ситуация: есть матричный принтер Olivetti установленный как Generic/TextOnly, данные должны приходить на него в кодировке cp866.
1. Как заставить его печатать нормально кириллицу в 866, faq - прочитал, перепробовал все:
и # -*- coding: cp866 -*-
и .encode('cp866') при отдаче текста
и сам файл перекодировал в досовскую кодировку - не помогало, все символы старше 127 - не печатает
На печать отправляется примерно так:
from wx.lib import printout as pr
...
text=str("test0123456789тест")
ptbl = pr.PrintTable()
ptbl.data = (text)
ptbl.Preview()
#ptbl.Print()
print sys.stdout.encoding
Офлайн
Я бы не стал привязываться к этой библиотеке, а сделал бы примерно так:
f = open("file.txt", "w")
f.write(unicode("Your text", "Your encoding").encode("cp866"))
f.close()
Отредактировано (Июнь 10, 2009 15:00:02)
Офлайн
balubalu, извини, я туплю наверное, как при этом заставить писать не в файл а в принтер? В Linux наверное можно найти устройство /dev/…. открыть как файл и писать как в файл в него, а как это под виндой сделать?
Я бы не стал привязываться к этой библиотеке, а сделал бы примерно так:f = open("file.txt", "w")
f.write(unicode("Your text", "Your encoding").encode("cp866"))
f.close()
Офлайн
Якщо дані друкуються, але не друкуються дані з кодом символа більше 127, то можливо у вас в самому принтері не загружено шрифтів з їх підтримкою?
Офлайн
кириличний текст з FAR друкує?
Офлайн
timasЕсли мне не изменяет память то copy file.txt PRN (или PRT, не помню). Можно копировать в LPT1 или куда там еще
balu, извини, я туплю наверное, как при этом заставить писать не в файл а в принтер?
Офлайн
clopomorFara не нашлось, но если открыть через IE и кодировку досовскую выставить то все нормально показывается :), насчет самого принтера, если например сделать что-то наподобие:
кириличний текст з FAR друкує?
text="""ТЕСТ ПЕЧАТИ"""
ptbl = pr.PrintTable()
ptbl.data = (unicode(text, 'cp1251').encode("866"))
ptbl.Preview()
Офлайн
baluДа, действительно, если записать все в cp866 в какой-нибудь файл, а потом командой:timasЕсли мне не изменяет память то copy file.txt PRN (или PRT, не помню). Можно копировать в LPT1 или куда там еще
balu, извини, я туплю наверное, как при этом заставить писать не в файл а в принтер?
copy file.txt COM1
Офлайн
timasКури доки по ESCAPE-последовательностям. Я, в свое время, с их помощью разные шрифты для досовской печати делал. Плюс были какие-то символы, кажется 13, которые бумагу выбрасывали. Вот их можно в конец файла и поставить.
отправить его в принтер, то все печатается как надо, вот только бумагу потом не отдает smile, приходится принудильно кнопку Eject на принтере нажимать
Отредактировано (Июнь 11, 2009 15:07:33)
Офлайн
baluДа точно в конец добавляем символ с кодом 12, и принтер бумагу выпускает.
… Плюс были какие-то символы, кажется 13, которые бумагу выбрасывали. Вот их можно в конец файла и поставить.
Офлайн