Форум сайта python.su
Добрый день!
Пытаюсь распечатать текст через 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()
Офлайн
надо первой или второй строкой написать -*- encoding: кодировка_исходника -*-
надо в литерале поставить u“”"
если hDC.DrawText() не принимает юникод-строку, то нужно её закодировать через .encode(нужная_кодировка)
Отредактировано (Ноя. 29, 2011 11:30:05)
Офлайн
py.user.next1) я пробовал это в IDLE (python 3.2)
надо первой или второй строкой написать -*- encoding: кодировка_исходника -*-
надо в литерале поставить u“”"
если hDC.DrawText() не принимает юникод-строку, то нужно её закодировать через .encode(нужная_кодировка)
>>> 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
Офлайн
Ishayahu
1) я пробовал это в IDLE (python 3.2)
Ishayahuскрипт для второго питона сделанprint win32print.GetDefaultPrinter()
Офлайн