Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 29, 2011 10:39:33

Ishayahu
От:
Зарегистрирован: 2011-10-18
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

изменение кодировки при выводе на печать через win32print

Добрый день!
Пытаюсь распечатать текст через win32print но не могу понять, как там справиться с кодировкой, чтобы выводить текст на русском.
Код такой:

import win32ui
import win32print
import win32con
tetx="""В приемную
Прошу Вас разрешить оплату счёта __________ от _____________
на сумму ___________________________________________________
Целевое назначение _________________________________________
Объект _____________________________________________________
Своевременное предоставление документов гарантирую.
Ответственное лицо ________________________________"""
hDC = win32ui.CreateDC()
print win32print.GetDefaultPrinter()
hDC.CreatePrinterDC(win32print.GetDefaultPrinter())
hDC.StartDoc("Test doc")
hDC.StartPage()
hDC.SetMapMode(win32con.MM_TWIPS)
ulc_x = 1000
ulc_y = -1000
lrc_x = 11500
lrc_y = -15000
hDC.DrawText(tetx, (ulc_x, ulc_y, lrc_x, lrc_y), win32con.DT_LEFT)
hDC.EndPage()
hDC.EndDoc()
Если есть другие варианты вывода текста на печать - с удовольствием их тоже услышу ))



Офлайн

#2 Ноя. 29, 2011 11:28:15

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9973
Репутация: +  856  -
Профиль   Отправить e-mail  

изменение кодировки при выводе на печать через win32print

надо первой или второй строкой написать -*- encoding: кодировка_исходника -*-
надо в литерале поставить u“”"
если hDC.DrawText() не принимает юникод-строку, то нужно её закодировать через .encode(нужная_кодировка)



Отредактировано (Ноя. 29, 2011 11:30:05)

Офлайн

#3 Ноя. 29, 2011 11:40:56

Ishayahu
От:
Зарегистрирован: 2011-10-18
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

изменение кодировки при выводе на печать через win32print

py.user.next
надо первой или второй строкой написать -*- encoding: кодировка_исходника -*-
надо в литерале поставить u“”"
если hDC.DrawText() не принимает юникод-строку, то нужно её закодировать через .encode(нужная_кодировка)
1) я пробовал это в IDLE (python 3.2)
2) не актуально соответственно
3)
>>>  hDC.DrawText(tetx.encode('cp1251'), (ulc_x, ulc_y, lrc_x, lrc_y), win32con.DT_LEFT)
Traceback (most recent call last):
File "<pyshell#72>", line 1, in <module>
hDC.DrawText(tetx.encode('cp1251'), (ulc_x, ulc_y, lrc_x, lrc_y), win32con.DT_LEFT)
TypeError: must be str, not bytes



Офлайн

#4 Ноя. 29, 2011 11:49:22

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9973
Репутация: +  856  -
Профиль   Отправить e-mail  

изменение кодировки при выводе на печать через win32print

Ishayahu
1) я пробовал это в IDLE (python 3.2)
Ishayahu
print win32print.GetDefaultPrinter()
скрипт для второго питона сделан



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version