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

Reply via email to