Форум сайта python.su
-1
я сохраняю скриншоты в jpg файл и шлю его на принтер нажатием <F1>, к которому привязана функция save_and_print_screenshot() с нижеприведенным кодом (код функции не мой, скопирован в Инете):
import Tkinter as tk
import win32print
import win32ui
from PIL import Image, ImageWin, ImageGrab
def save_and_print_screenshot():
#######saving scrinshot:
im =ImageGrab.grab()
im.save("screenshot.jpg")
#######printing screenshot:
HORZRES = 8
VERTRES = 10
LOGPIXELSX = 88
LOGPIXELSY = 90
PHYSICALWIDTH = 110
PHYSICALHEIGHT = 111
PHYSICALOFFSETX = 112
PHYSICALOFFSETY = 113
printer_name = win32print.GetDefaultPrinter ()
file_name = "screenshot.jpg"
hDC = win32ui.CreateDC ()
hDC.CreatePrinterDC (printer_name)
printable_area = hDC.GetDeviceCaps (HORZRES), hDC.GetDeviceCaps (VERTRES)
printer_size = hDC.GetDeviceCaps (PHYSICALWIDTH), hDC.GetDeviceCaps (PHYSICALHEIGHT)
printer_margins = hDC.GetDeviceCaps (PHYSICALOFFSETX), hDC.GetDeviceCaps (PHYSICALOFFSETY)
bmp = Image.open (file_name)
if bmp.size[0] > bmp.size[1]:
bmp = bmp.rotate (90)
ratios = [1.0 * printable_area[0] / bmp.size[0], 1.0 * printable_area[1] / bmp.size[1]]
scale = min (ratios)
hDC.StartDoc (file_name)
hDC.StartPage ()
dib = ImageWin.Dib (bmp)
scaled_width, scaled_height = [int (scale * i) for i in bmp.size]
x1 = int ((printer_size[0] - scaled_width) / 2)
y1 = int ((printer_size[1] - scaled_height) / 2)
x2 = x1 + scaled_width
y2 = y1 + scaled_height
dib.draw (hDC.GetHandleOutput (), (x1, y1, x2, y2))
hDC.EndPage ()
hDC.EndDoc ()
hDC.DeleteDC ()
Офлайн
253
andrei186Так что вам мешает нажать <F1>? Вы в сто раз больше кнопок нажали пока писали пост.
Предположим, я быстро вызову эту функцию несколько раз подряд нажав <F1>, не дожидаясь, пока принтер отпечатает первый скриншот.
andrei186Не принимается, есть полно виртуальных принтеров.
Не могу проверить это опытным путем, т.к. не имею принтера под рукой
Отредактировано doza_and (Фев. 4, 2016 19:39:38)
Офлайн
-1
doza_andСпасибо.
Так что вам мешает нажать <F1>? Вы в сто раз больше кнопок нажали пока писали пост.
Офлайн
49
andrei186
А что Вам помешало до конца дочитать мой пост и получить ответ на Ваш вопрос?
doza_and
Не принимается, есть полно виртуальных принтеров.
Офлайн
253
:) Это наверное работает закон экспоненциального спада внимания по длине сообщения.
Офлайн
-1
doza_andРазобрался, понял, спасибоЭто наверное работает закон экспоненциального спада внимания по длине сообщения.
Отредактировано andrei186 (Фев. 4, 2016 21:08:58)
Офлайн
61
Ничего что у любого принтера своя очередь печати?
И все что вы посылаете на печать работает через нее?
По сути - выберите 10 картинок и отправьте на печать
вы думаете оно по другому работает?
Офлайн