win32api python winapi

win32api - Python win32print cambiando las opciones avanzadas de la impresora



no module named win32api (1)

from ctypes import windll windll[''winspool.drv''].AdvancedDocumentPropertiesA(None, pHandle.handle, ''300LN1'', None, None)

Estoy usando python 2.7 y win32print. Puedo cambiar con éxito la orientación entre retrato y paisaje:

PRINTER_DEFAULTS = {"DesiredAccess":win32print.PRINTER_ALL_ACCESS} pHandle = win32print.OpenPrinter(''300LN1'', PRINTER_DEFAULTS) properties = win32print.GetPrinter(pHandle, 2) pDevModeObj.Orientation = 2 properties["pDevMode"]=pDevModeObj win32print.SetPrinter(pHandle,2,properties,0)

Sin embargo, deseo cambiar algunas de las propiedades personalizadas para mi impresora, pero parece que no puedo encontrar dónde hacerlo. Esta es una de las pestañas que quiero cambiar: http://dl.dropbox.com/u/584330/print.jpg . Creo que estas opciones son accesibles cuando se habilita la opción "características avanzadas de impresión".

Información adicional (código):

devmode=pDevModeObj for n in dir(devmode): print "%s/t%s" % (n,getattr(devmode,n))

Salida:

BitsPerPel 0 Clear <built-in method Clear of PyDEVMODEA object at 0x028EE750> Collate 1 Color 2 Copies 1 DefaultSource 15 DeviceName 300LN1 DisplayFixedOutput 19660815 DisplayFlags 1 DisplayFrequency 0 DisplayOrientation 65636 DitherType 4294967295 DriverData DINU" DriverExtra 824 DriverVersion 1536 Duplex 1 Fields 92401475 FormName Letter ICMIntent 2 ICMMethod 1 LogPixels 0 MediaType 1 Nup 1 Orientation 2 PanningHeight 0 PanningWidth 0 PaperLength 2794 PaperSize 1 PaperWidth 2159 PelsHeight 0 PelsWidth 0 Position_x 65538 Position_y 141495018 PrintQuality 300 Reserved1 0 Reserved2 0 Scale 100 Size 156 SpecVersion 1025 TTOption 2 YResolution 300 __class__ <type ''PyDEVMODEA''> __delattr__ <method-wrapper ''__delattr__'' of PyDEVMODEA object at 0x028EE750> __doc__ None __format__ <built-in method __format__ of PyDEVMODEA object at 0x028EE750> __getattribute__ <method-wrapper ''__getattribute__'' of PyDEVMODEA object at 0x028EE750> __hash__ <method-wrapper ''__hash__'' of PyDEVMODEA object at 0x028EE750> __init__ <method-wrapper ''__init__'' of PyDEVMODEA object at 0x028EE750> __new__ <built-in method __new__ of type object at 0x1E7B9970> __reduce__ <built-in method __reduce__ of PyDEVMODEA object at 0x028EE750> __reduce_ex__ <built-in method __reduce_ex__ of PyDEVMODEA object at 0x028EE750> __repr__ <method-wrapper ''__repr__'' of PyDEVMODEA object at 0x028EE750> __setattr__ <method-wrapper ''__setattr__'' of PyDEVMODEA object at 0x028EE750> __sizeof__ <built-in method __sizeof__ of PyDEVMODEA object at 0x028EE750> __str__ <method-wrapper ''__str__'' of PyDEVMODEA object at 0x028EE750> __subclasshook__ <built-in method __subclasshook__ of type object at 0x1E7B9970>

[edit] Acabo de probar el siguiente código:

win32print.DocumentProperties(0, pHandle, ''300LN1'', None, None, 5)

Esto abrirá la ventana de propiedades que quiero modificar.

Además, ¿sabe si es posible pedirle a una impresora que deje de imprimir una vez que llegue, digamos 300 páginas?