2011-04-05 32 views
7

Estoy usando python 2.7 y win32print. Puedo cambiar con éxito la orientación entre vertical y horizontal:Python win32print cambio de opciones avanzadas de impresora

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, quiero cambiar algunas de las propiedades personalizadas para mi impresora, pero parece que no puede 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> 

[editar] Acabo de intentar el siguiente código:

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

Esto abrirá la ventana de propiedades Quiero modificar

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

+0

He logrado cambiar la configuración, pero cada vez que imprimo utilizando shimgvw.dll no utilizará las configuraciones predeterminadas de la impresora. ¿Alguna idea? –

Respuesta

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