I should add (as I have noticed this is misleading below) - that I have also tried Python 3.1.1 and pywin32-214.win32-py3.1.exe with exactly the same results. The trace of the exception below is from this attempt (hence it saying that dynamic.py is in Python31)
________________________________ From: Sunny Carter Sent: 22 December 2009 15:03 To: python-win32@python.org Cc: Sunny Carter Subject: pywintypes.com_error using Python 3.0 Boolean type calling Photoshop API Hi all, I am writing a Python script to call across to Adobe Photoshop, to automate some image manipulation. (For historical reasons I'm writing using Python rather than javascript or VB) My problem is that my script works fine using Python 2.6, but fails after upgrading to Python 3.0 or 3.1.1. I've converted the script to Python 3.0 format, and it all works except the call across the Photoshop API. The problem seems to be with the win32 API call using a Boolean value (False in my python script) which is not recognised as a Boolean by Photoshop. Details: Script based in part on http://techarttiki.blogspot.com/2008/08/photoshop-scripting-with-python.html Script uses pywin32 from http://sourceforge.net/projects/pywin32/files/ - I have installed pywin32-214.win32-py2.6.exe for Python 2.6 and pywin32-214.win32-py3.0.exe for use with Python 3.0 Subset of the script: import win32com.client psApp = win32com.client.Dispatch('Photoshop.Application') doc = psApp.Open(os.path.abspath(psd_image.psd_filename)) # Here I do the image manipulation which I haven't included here as it is irrelevant (and working fine - # calling Photoshop and making it do stuff) psd_save_options = win32com.client.Dispatch("Photoshop.PNGSaveOptions") psd_save_options.Interlaced = False print("Save as %s" % (os.path.join(output_directory, psd_image.final_filename))) doc.SaveAs(os.path.join(output_directory, psd_image.final_filename), psd_save_options, True, 2) # lower case extension Exception hit: Unexpected error detail: <class 'pywintypes.com_error'> Traceback (most recent call last): File "C:\brander\brander.py", line 6464, in <module> main() File "C:\brander\brander.py", line 6407, in main recf) File "C:\brander\brander.py", line 4303, in createBranding brand_widgets) File "C:\brander\brander.py", line 1961, in reconstructImageDirectory brand_widgets) File "C:\brander\brander.py", line 1961, in reconstructImageDirectory brand_widgets) File "C:\brander\brander.py", line 1961, in reconstructImageDirectory brand_widgets) File "C:\brander\brander.py", line 1999, in reconstructImageDirectory new_color_palette) File "C:\brander\brander.py", line 2519, in reconstructPSDImageFile psd_save_options.Interlaced = False File "C:\Program Files\Python31\lib\site-packages\win32com\client\dynamic.py", line 550, in __setattr__ self._oleobj_.Invoke(entry.dispid, 0, invoke_type, 0, value) pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, 'Adobe Photoshop' , 'Boolean value expected', None, 0, -2147220276), None) Investigation tracing from pywintypes.py The dll being loaded is C:\WINDOWS\system32\pywintypes30.dll Things tried so far I've already tried setting psd_save_options.Interlaced to True, "False", 0, 1 and None. In this, None gets further on in the script but then fails on the SaveAs call. If I delete the psd_save_options.Interlaced line, then the script fails in exactly the same way on the SaveAs call (this time the parameter True is the culprit). As I say - the same script works fine using Python 2.6 and pywin32-214.win32-py2.6.exe. I am running on Windows XP. Help? If anyone can help with a solution that would be great. If there is no way of fixing, is it possible to run my python script using Python 2.6 but call out to a separate script running Python 3.0 for the part where I require 3.0? (not included here) Thanks so much, Sunny Carter <http://www.metaswitch.com/>
_______________________________________________ python-win32 mailing list python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32