AppleScript保存预览文档

时间:2015-03-31 03:32:15

标签: applescript

我正在使用第三方应用程序将图像复制到剪贴板。然后我想执行打开预览的AppleScript,创建一个新文档,然后将剪贴板用作内容,然后将其保存到指定位置。

我99%的方式 - 只是无法保存文件。我在OS X 10.9.5上。

到目前为止,这是我的脚本:

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

我找不到保存预览文档的正确语法。它将是当时唯一开放的文件。

2 个答案:

答案 0 :(得分:1)

请尝试以下操作 - 请注意评论:

# 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

答案 1 :(得分:0)

此脚本用于在2010 Mac Mini上的OS 10.11.6中使用“预览”将剪贴板中的图像保存到磁盘:

--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)