Найти - Пользователи
Полная версия: печать через wxPython без Preview и в cp866
Начало » Python для новичков » печать через wxPython без Preview и в cp866
1
timas
Добрый день всем.
Такая ситуация: есть матричный принтер 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()
При всем при этом, запускаю из под idle, и
print sys.stdout.encoding
выдает cp1251
Подскажите, куда копать, как отправить text именно в cp866.

2. Как отправить текст на печать напрямую без Preview или Print, может делал кто?
p.s. первый вопрос конечно актуальнее
balu
Я бы не стал привязываться к этой библиотеке, а сделал бы примерно так:
f = open("file.txt", "w")
f.write(unicode("Your text", "Your encoding").encode("cp866"))
f.close()
Или погуглить на счет красивой печати.
timas
balu
Я бы не стал привязываться к этой библиотеке, а сделал бы примерно так:
f = open("file.txt", "w")
f.write(unicode("Your text", "Your encoding").encode("cp866"))
f.close()
balu, извини, я туплю наверное, как при этом заставить писать не в файл а в принтер? В Linux наверное можно найти устройство /dev/…. открыть как файл и писать как в файл в него, а как это под виндой сделать?
clopomor
Якщо дані друкуються, але не друкуються дані з кодом символа більше 127, то можливо у вас в самому принтері не загружено шрифтів з їх підтримкою?
clopomor
кириличний текст з FAR друкує?
balu
timas
balu, извини, я туплю наверное, как при этом заставить писать не в файл а в принтер?
Если мне не изменяет память то copy file.txt PRN (или PRT, не помню). Можно копировать в LPT1 или куда там еще
timas
clopomor
кириличний текст з FAR друкує?
Fara не нашлось, но если открыть через IE и кодировку досовскую выставить то все нормально показывается :), насчет самого принтера, если например сделать что-то наподобие:
text="""ТЕСТ ПЕЧАТИ"""
ptbl = pr.PrintTable()
ptbl.data = (unicode(text, 'cp1251').encode("866"))
ptbl.Preview()
То он какие-то символы печатает нормально, какие-то нет: ТЕСТ .Е.АТ. , вообщем какие-то символы печатает какие-то то нет, но люди утверждают что этот принтер несколько лет печатал билеты и все нормально было.
timas
balu
timas
balu, извини, я туплю наверное, как при этом заставить писать не в файл а в принтер?
Если мне не изменяет память то copy file.txt PRN (или PRT, не помню). Можно копировать в LPT1 или куда там еще
Да, действительно, если записать все в cp866 в какой-нибудь файл, а потом командой:
copy file.txt COM1
отправить его в принтер, то все печатается как надо, вот только бумагу потом не отдает :), приходится принудильно кнопку Eject на принтере нажимать, а когда отправляешь на печать через wxPython, то потом бумага сама вылазит, походу надо еще что-то слать.
balu
timas
отправить его в принтер, то все печатается как надо, вот только бумагу потом не отдает smile, приходится принудильно кнопку Eject на принтере нажимать
Кури доки по ESCAPE-последовательностям. Я, в свое время, с их помощью разные шрифты для досовской печати делал. Плюс были какие-то символы, кажется 13, которые бумагу выбрасывали. Вот их можно в конец файла и поставить.
timas
balu
… Плюс были какие-то символы, кажется 13, которые бумагу выбрасывали. Вот их можно в конец файла и поставить.
Да точно в конец добавляем символ с кодом 12, и принтер бумагу выпускает.
Спасибо.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB