[python-win32] Problem with win32print.SetPrinter
Tefnet Developers
developers at tefnet.pl
Mon Feb 28 11:22:33 CET 2011
Hi,
I am adding some printers connection as a user with
win32print.AddPrinterConnection().
Afterwards I want to set paper size to A4 (I have no idea why Polish
Windows XP sets it to Letter by default) with this example code:
==================================================================
import win32print
import win32con
import win32gui
import pywintypes
printer = r'\\drukarki\kp01'
handle = win32print.OpenPrinter(printer, {'DesiredAccess':
win32print.PRINTER_ACCESS_USE})
devmodeSize=win32print.DocumentProperties(0, handle, printer, None,
None, 0)
devmode = pywintypes.DEVMODEType(devmodeSize -
pywintypes.DEVMODEType().Size)
win32print.DocumentProperties(0, handle, printer, devmode, devmode,
win32con.DM_IN_BUFFER | win32con.DM_OUT_BUFFER)
print 'FormName before: %s' % devmode.FormName
print 'PaperSize before: %s' % devmode.PaperSize
devmode.FormName = "A4"
devmode.PaperSize = win32con.DMPAPER_A4
devmode.Fields = devmode.Fields | win32con.DM_FORMNAME |
win32con.DM_PAPERSIZE
print 'FormName set: %s' % devmode.FormName
print 'PaperSize set: %s' % devmode.PaperSize
info = win32print.GetPrinter(handle, 9)
info["pDevMode"] = devmode
win32print.SetPrinter(handle, 9, info, 0)
devmodeSize=win32print.DocumentProperties(0, handle, printer, None,
None, 0)
devmode = pywintypes.DEVMODEType(devmodeSize -
pywintypes.DEVMODEType().Size)
win32print.DocumentProperties(0, handle, printer, devmode, devmode,
win32con.DM_IN_BUFFER | win32con.DM_OUT_BUFFER)
print 'FormName after: %s' % devmode.FormName
print 'PaperSize after: %s' % devmode.PaperSize
win32print.ClosePrinter(handle)
win32gui.SendMessageTimeout(win32con.HWND_BROADCAST,
win32con.WM_DEVMODECHANGE, 0, 0, 0, 2000)
==================================================================
The output looks like this:
==================================================================
FormName before: A4
PaperSize before: 1
FormName set: A4
PaperSize set: 9
FormName after: A4
PaperSize after: 1
==================================================================
So, as you can see - FormName changes, but PaperSize does not.
Am I doing something wrong here? I've spent a lot of time trying to
solve it, yet came up with nothing.
Do you have any suggestions?
Thanks,
Filip Zyzniewski
Tefnet
More information about the python-win32
mailing list