Найти - Пользователи
Полная версия: Печать документов с помощью win32print
Начало » Python для экспертов » Печать документов с помощью win32print
1 2
feniks92
Добрый день, народ, подскажите, кто нибудь? Необходимо отправлять на принтер, подключенный по USB документы, которые могут содержать и кириллицу и латиницу и цифры(договоры, как правило), уже третий день парюсь, но пока ни одного русского символа распечатать не удалось…
Мысль была через win32print сие осуществить… следующий код использовал:

INCH = 1440
hDC = win32gui.CreateDC("Display", None, None)
pyprinter = win32ui.CreateDCFromHandle(hDC)
pyprinter.CreatePrinterDC(win32print.GetDefaultPrinter ())
pyprinter.StartDoc("Test doc")
pyprinter.SetMapMode(win32con.MM_TWIPS)
pyprinter.DrawText (u"Факинщит", (0, INCH * -1, INCH * 8, INCH * -2), win32con.DT_CENTER)
pyprinter.EndDoc()

INCH - просто для вывода на середину использовал…
Python 3.4
В последующем планируется использовать для печати формат rtf…
Спасите мой мозг… уже весь сломал…
Rodegast
http://python.su/forum/topic/13460/?page=1#post-81611
feniks92
Я, конечно, дико извиняюсь, но уточню - мне нужно через pywin все это организовать - начальство настаивает… Я и сам прекрасно понимаю что Qt использовать - высший кайф, но…. нельзя… Поэтому необходимо использовать win32print, но такой маленький прикол с указанием кодировки (я имел в виду u), не работает…
Rodegast
> но такой маленький прикол с указанием кодировки (я имел в виду u), не работает…

Перекодируй текст в cp-1251, тогда может и заработеет.
u"Факинщит".encode("cp1251")
feniks92
при энкоде все это переводиться в байты. подобную штуку делал при использовании win32print.WritePrinter - там нужно передавать байты, но на странице получал набор символов (с кодировкой в том случае бесполезно играться - не помогает, там вроде в PostrScript переделывать нужно) В данном случае команда DrawText требует у себя строку - но опять получаем слетевшую кодировку…
feniks92
Неужели никто не знает? никто не писал на питоне под винду?
doza_and
feniks92
никто не писал на питоне под винду?
Под винду писали :).
Первая же ссылка в инете.
https://geonet.esri.com/thread/59446

Рецепт у нас простой. LaTeX делает pdf. И средствами ОС (все равно какой win, Unix…) он отлично отправляется на принтер (тоже все равно какой USB, LPT, сетевой). Каждая из этих операций делается максимум в две строчки.
Можно попробовать:
os.startfile("out.pdf", "print")

win32gui в топку.

feniks92
В последующем планируется использовать для печати формат rtf…

Хм. давно не использовал. Получаются до безобразия огроменные документы. Формат просто архаический, нас практически никогда не удовлетворяли его возможности. Для генерации документов типа счет и т.п. Отлично работала связка Mako templates + Latex. Если выход html то будет быстрее идти генерация. Но думаю тут умельцы делать счета есть получше меня, может еще что присоветуют.
feniks92
Спасибо ,да, на эту ссылку натыкался, отложил пока, ибо пдф… ну если ничего более не найду - попробую через пдф То есть, если я правильно понял, то отправлять на печать русский текст через win32 в принципе не получится?
doza_and
feniks92
win32 в принципе не получится
Да кто его знает. Может и получится. НО позвольте развести холивар.
!) Насколько я знаю для обеспечения нормального качества печати сейчас cтандартами де факто входных данных для принтеров являются pdf и ps/eps.
2) Решение с pdf гораздо более устойчиво. Работает на разных ОС с разными принтерами. Вам не прийдется постоянно заниматься модификацией программы при изменении окружения или драйверов. Вы можете без проблем отправить результат любому корреспонденту. И оно будет нормально выглядеть и на Android и на iOS в отличии от rtf.
3) Генерировать pdf/ps гораздо проще чем rtf или тем более doc/docx. При этом у вас больше опций в руках. (Я подозреваю что вы хотите использовать технологию рисовать счета в ворде и хранить их в таком виде. При необходимости конвертнуть в rtf и отправить на печать. Уверяю вас, использование ворда для этих целей катастрофа для любого проекта. Если интереснее связывайтесь со мной объясню подробнее.)
feniks92
ну если ничего более не найду
Поэтому любой здравомыслящий человек начнет с pdf.
feniks92
Ну, холивара не будет У нас не счета, у нас эьтакий шаблон договора, который будет печататься автономно на терминале оплаты.. (долгая история), я сам понимаю, что проще в пдф проще будет и данные подставлять - там хоть через JS, хоть как… вариантов масса, просто начальство давит Хочет в rtf, типа “старинный устоявшийся формат” Но спасибо, попробую через пдф - хоть рабочее решение бьудет, потом буду мучаться с остальными форматами
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