Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 10, 2009 13:57:20

timas
От:
Зарегистрирован: 2008-08-28
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

печать через wxPython без Preview и в cp866

Добрый день всем.
Такая ситуация: есть матричный принтер 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. первый вопрос конечно актуальнее



Офлайн

#2 Июнь 10, 2009 14:57:45

balu
От:
Зарегистрирован: 2006-05-24
Сообщения: 521
Репутация: +  0  -
Профиль   Отправить e-mail  

печать через wxPython без Preview и в cp866

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

f = open("file.txt", "w")
f.write(unicode("Your text", "Your encoding").encode("cp866"))
f.close()
Или погуглить на счет красивой печати.



Отредактировано (Июнь 10, 2009 15:00:02)

Офлайн

#3 Июнь 10, 2009 15:55:16

timas
От:
Зарегистрирован: 2008-08-28
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

печать через wxPython без Preview и в cp866

balu
Я бы не стал привязываться к этой библиотеке, а сделал бы примерно так:
f = open("file.txt", "w")
f.write(unicode("Your text", "Your encoding").encode("cp866"))
f.close()
balu, извини, я туплю наверное, как при этом заставить писать не в файл а в принтер? В Linux наверное можно найти устройство /dev/…. открыть как файл и писать как в файл в него, а как это под виндой сделать?



Офлайн

#4 Июнь 10, 2009 17:37:04

clopomor
От:
Зарегистрирован: 2007-06-12
Сообщения: 154
Репутация: +  0  -
Профиль   Отправить e-mail  

печать через wxPython без Preview и в cp866

Якщо дані друкуються, але не друкуються дані з кодом символа більше 127, то можливо у вас в самому принтері не загружено шрифтів з їх підтримкою?



Офлайн

#5 Июнь 10, 2009 17:42:25

clopomor
От:
Зарегистрирован: 2007-06-12
Сообщения: 154
Репутация: +  0  -
Профиль   Отправить e-mail  

печать через wxPython без Preview и в cp866

кириличний текст з FAR друкує?



Офлайн

#6 Июнь 11, 2009 08:41:43

balu
От:
Зарегистрирован: 2006-05-24
Сообщения: 521
Репутация: +  0  -
Профиль   Отправить e-mail  

печать через wxPython без Preview и в cp866

timas
balu, извини, я туплю наверное, как при этом заставить писать не в файл а в принтер?
Если мне не изменяет память то copy file.txt PRN (или PRT, не помню). Можно копировать в LPT1 или куда там еще



Офлайн

#7 Июнь 11, 2009 13:48:22

timas
От:
Зарегистрирован: 2008-08-28
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

печать через wxPython без Preview и в cp866

clopomor
кириличний текст з FAR друкує?
Fara не нашлось, но если открыть через IE и кодировку досовскую выставить то все нормально показывается :), насчет самого принтера, если например сделать что-то наподобие:
text="""ТЕСТ ПЕЧАТИ"""
ptbl = pr.PrintTable()
ptbl.data = (unicode(text, 'cp1251').encode("866"))
ptbl.Preview()
То он какие-то символы печатает нормально, какие-то нет: ТЕСТ .Е.АТ. , вообщем какие-то символы печатает какие-то то нет, но люди утверждают что этот принтер несколько лет печатал билеты и все нормально было.



Офлайн

#8 Июнь 11, 2009 14:10:50

timas
От:
Зарегистрирован: 2008-08-28
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

печать через wxPython без Preview и в cp866

balu
timas
balu, извини, я туплю наверное, как при этом заставить писать не в файл а в принтер?
Если мне не изменяет память то copy file.txt PRN (или PRT, не помню). Можно копировать в LPT1 или куда там еще
Да, действительно, если записать все в cp866 в какой-нибудь файл, а потом командой:
copy file.txt COM1
отправить его в принтер, то все печатается как надо, вот только бумагу потом не отдает :), приходится принудильно кнопку Eject на принтере нажимать, а когда отправляешь на печать через wxPython, то потом бумага сама вылазит, походу надо еще что-то слать.



Офлайн

#9 Июнь 11, 2009 15:07:04

balu
От:
Зарегистрирован: 2006-05-24
Сообщения: 521
Репутация: +  0  -
Профиль   Отправить e-mail  

печать через wxPython без Preview и в cp866

timas
отправить его в принтер, то все печатается как надо, вот только бумагу потом не отдает smile, приходится принудильно кнопку Eject на принтере нажимать
Кури доки по ESCAPE-последовательностям. Я, в свое время, с их помощью разные шрифты для досовской печати делал. Плюс были какие-то символы, кажется 13, которые бумагу выбрасывали. Вот их можно в конец файла и поставить.



Отредактировано (Июнь 11, 2009 15:07:33)

Офлайн

#10 Июнь 15, 2009 18:10:02

timas
От:
Зарегистрирован: 2008-08-28
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

печать через wxPython без Preview и в cp866

balu
… Плюс были какие-то символы, кажется 13, которые бумагу выбрасывали. Вот их можно в конец файла и поставить.
Да точно в конец добавляем символ с кодом 12, и принтер бумагу выпускает.
Спасибо.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version