0
votes

I'm using a third party application to copy an image to the clipboard. I would then like to perform an AppleScript that opens Preview, creates a New Document which will then use the clipboard as the content, then save this to a specified location.

I'm 99% of the way there - just can't get the document to save. I'm on OS X 10.9.5.

Here's my script so far:

set the save_location to the quoted form of "/Users/freddy/Documents/test.png"

 tell application "Preview"
    activate
 end tell

 tell application "System Events"
    tell process "Preview"
        keystroke "n" using {command down}
    end tell
 end tell

 tell application "Preview"
    activate
    save front document as "PNG" in POSIX file save_location
 end tell

I can't find the correct syntax for saving a Preview document. It will be the only document open at the time.

2

2 Answers

1
votes

Try the following - note the comments:

# Do not use `quoted form of` - only needed and useful with `do shell script`
set the save_location to "/Users/jdoe/Documents/test.png"

tell application "Preview"
    activate
end tell

tell application "System Events"
    tell process "Preview"
        keystroke "n" using {command down}
    end tell
end tell

tell application "Preview"
    # Wait until the new window appears.
    # Trying to save before the window has appeared will fail.
    # Note: - This assumes that NO window was initially open.
    #       - The code should be made more robust to eventually time out.
    repeat until (count of windows) > 0
        delay 0.3
    end repeat
    activate
    # Save the document; `as "<format>"` doesn't seem to work, but the 
    # format is *implied* by the filename suffix (extension).
    save front document in POSIX file save_location
end tell
0
votes

This script works to save an image in the clipboard to disk, using Preview in OS 10.11.6 on a 2010 Mac Mini:

--CONDITIONS: Finder's clipboard has an image in it
tell application "Preview"
    launch
    activate
end tell
delay 2 --tweak the delays to what works
tell application "System Events" --not as elegant as "tell application...to tell process", but clearer, chronologically
    keystroke "n" using command down --Preview creates a new window.
    delay 1
    keystroke "v" using command down --Finder's clipboard image is pasted into Preview window.
end tell
delay 1
tell application "System Events"
    set the clipboard to "Joe Blow" --for name of forthcoming Preview file
    delay 1
    keystroke "w" using command down --Forces prompt of Preview to save image.
    delay 1
    keystroke "v" using command down --Pastes new filename into Preview's save window.
    delay 1
    key code 36 --"Return" key saves the new file.
end tell
--RESULT: A new image exists in your default folder, named "Joe Blow.png" (or whatever extension)