Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 2, 2015 14:15:02

feniks92
Зарегистрирован: 2015-04-24
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Печать документов с помощью win32print

Добрый день, народ, подскажите, кто нибудь? Необходимо отправлять на принтер, подключенный по 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…
Спасите мой мозг… уже весь сломал…

Офлайн

#2 Окт. 2, 2015 14:21:15

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2756
Репутация: +  184  -
Профиль   Отправить e-mail  

Печать документов с помощью win32print

http://python.su/forum/topic/13460/?page=1#post-81611



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#3 Окт. 2, 2015 14:47:25

feniks92
Зарегистрирован: 2015-04-24
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Печать документов с помощью win32print

Я, конечно, дико извиняюсь, но уточню - мне нужно через pywin все это организовать - начальство настаивает… Я и сам прекрасно понимаю что Qt использовать - высший кайф, но…. нельзя… Поэтому необходимо использовать win32print, но такой маленький прикол с указанием кодировки (я имел в виду u), не работает…

Офлайн

#4 Окт. 2, 2015 15:47:17

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2756
Репутация: +  184  -
Профиль   Отправить e-mail  

Печать документов с помощью win32print

> но такой маленький прикол с указанием кодировки (я имел в виду u), не работает…

Перекодируй текст в cp-1251, тогда может и заработеет.

u"Факинщит".encode("cp1251")



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#5 Окт. 2, 2015 16:05:34

feniks92
Зарегистрирован: 2015-04-24
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Печать документов с помощью win32print

при энкоде все это переводиться в байты. подобную штуку делал при использовании win32print.WritePrinter - там нужно передавать байты, но на странице получал набор символов (с кодировкой в том случае бесполезно играться - не помогает, там вроде в PostrScript переделывать нужно) В данном случае команда DrawText требует у себя строку - но опять получаем слетевшую кодировку…

Офлайн

#6 Окт. 3, 2015 13:52:16

feniks92
Зарегистрирован: 2015-04-24
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Печать документов с помощью win32print

Неужели никто не знает? никто не писал на питоне под винду?

Офлайн

#7 Окт. 3, 2015 17:09:16

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Печать документов с помощью win32print

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 то будет быстрее идти генерация. Но думаю тут умельцы делать счета есть получше меня, может еще что присоветуют.



Отредактировано doza_and (Окт. 3, 2015 17:13:58)

Офлайн

#8 Окт. 4, 2015 09:46:20

feniks92
Зарегистрирован: 2015-04-24
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Печать документов с помощью win32print

Спасибо ,да, на эту ссылку натыкался, отложил пока, ибо пдф… ну если ничего более не найду - попробую через пдф То есть, если я правильно понял, то отправлять на печать русский текст через win32 в принципе не получится?

Офлайн

#9 Окт. 4, 2015 17:22:23

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Печать документов с помощью win32print

feniks92
win32 в принципе не получится
Да кто его знает. Может и получится. НО позвольте развести холивар.
!) Насколько я знаю для обеспечения нормального качества печати сейчас cтандартами де факто входных данных для принтеров являются pdf и ps/eps.
2) Решение с pdf гораздо более устойчиво. Работает на разных ОС с разными принтерами. Вам не прийдется постоянно заниматься модификацией программы при изменении окружения или драйверов. Вы можете без проблем отправить результат любому корреспонденту. И оно будет нормально выглядеть и на Android и на iOS в отличии от rtf.
3) Генерировать pdf/ps гораздо проще чем rtf или тем более doc/docx. При этом у вас больше опций в руках. (Я подозреваю что вы хотите использовать технологию рисовать счета в ворде и хранить их в таком виде. При необходимости конвертнуть в rtf и отправить на печать. Уверяю вас, использование ворда для этих целей катастрофа для любого проекта. Если интереснее связывайтесь со мной объясню подробнее.)
feniks92
ну если ничего более не найду
Поэтому любой здравомыслящий человек начнет с pdf.



Офлайн

#10 Окт. 5, 2015 10:54:46

feniks92
Зарегистрирован: 2015-04-24
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Печать документов с помощью win32print

Ну, холивара не будет У нас не счета, у нас эьтакий шаблон договора, который будет печататься автономно на терминале оплаты.. (долгая история), я сам понимаю, что проще в пдф проще будет и данные подставлять - там хоть через JS, хоть как… вариантов масса, просто начальство давит Хочет в rtf, типа “старинный устоявшийся формат” Но спасибо, попробую через пдф - хоть рабочее решение бьудет, потом буду мучаться с остальными форматами

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version