Applescript GUI для Mountain Lion
Я пытаюсь создать скрипт, который открывает файл swf с сафари, а затем печатает его как PDF, используя встроенную функцию "Сохранить как PDF". Пока мой код выглядит так:
set appleworksFolder to choose folder
tell application "Finder"
set folderItems to (files of entire contents of appleworksFolder)
repeat with I from 1 to number of items in folderItems
set the_doc to item I of folderItems
set doc_name to name of the_doc as text
tell application "Finder"
set the clipboard to doc_name & ".pdf"
end tell
if name of the_doc is not ".DS_Store" then
try
tell application "Safari"
activate
open the_doc
tell application "System Events"
tell application process "Safari"
delay 1
click menu item "Print…" of menu "File" of menu bar 1
delay 5
click menu button "PDF" of window "Print" of application process "Safari" of application "System Events"
delay 1
click menu item "Save as PDF…" of menu "PDF" of menu button "PDF" of window "Print" of application process "Safari" of application "System Events"
delay 1
keystroke "v" using command down
click button "Save" of window "Save" of application process "Safari" of application "System Events"
delay 8
keystroke "w" using command down
delay 0.5
end tell
end tell
end tell
end try
end if
end repeat
end tell
Это работает, чтобы увидеть диалог печати, но он, похоже, не нажимает кнопку меню pdf, поэтому не получается дальше этого. Мне было интересно, если это проблема с горным львом, не позволяющим мне использовать applescript для управления кнопками, и если да, то есть ли это для этого? Любая помощь будет принята с благодарностью!
Я просто показал кому-то, как это сделать в Mail на другом веб-сайте. Вы можете видеть это в сообщении № 7 здесь. Во всяком случае, здесь этот код скорректирован для ваших данных и Safari. Я надеюсь, что это помогает!
set appleworksFolder to choose folder
tell application "Finder"
set folderItems to (files of entire contents of appleworksFolder) as alias list
end tell
repeat with i from 1 to count of folderItems
set thisItem to (item i of folderItems) as text
tell application "Finder"
set n to name of file thisItem
set c to (container of file thisItem) as text
end tell
tell application "Safari"
activate
open file thisItem
end tell
saveAsPDFInSafari(c, n, true)
end repeat
tell me
activate
display dialog "Finished!" buttons {"OK"} default button 1 with icon note
end tell
(*********** SUBROUTINES *************)
on saveAsPDFInSafari(saveFolder, saveFileName, shouldCloseWhenFinished)
set myDelay to 0.2
-- setup the name
if saveFileName does not end with ".pdf" then
if character -4 of saveFileName is "." then
set saveFileName to text 1 thru -5 of saveFileName
end if
set saveFileName to saveFileName & ".pdf"
end if
-- setup the folder
set saveFolder to saveFolder as text
set posixSaveFolder to POSIX path of saveFolder
if posixSaveFolder ends with "/" then set posixSaveFolder to text 1 thru -2 of posixSaveFolder
-- save as pdf
tell application "Safari" to activate
tell application "System Events"
tell process "Safari"
keystroke "p" using command down
repeat until exists sheet 1 of window 1
delay myDelay
end repeat
tell sheet 1 of window 1
click menu button "PDF"
repeat until exists menu 1 of menu button "PDF"
delay myDelay
end repeat
click menu item "Save as PDF…" of menu 1 of menu button "PDF"
end tell
repeat until exists (sheet 1 of sheet 1 of window 1)
delay myDelay
end repeat
keystroke saveFileName
delay myDelay
keystroke "g" using {command down, shift down}
repeat until exists sheet 1 of sheet 1 of sheet 1 of window 1
delay myDelay
end repeat
tell sheet 1 of sheet 1 of sheet 1 of window 1
set value of text field 1 to posixSaveFolder
delay myDelay
click button "Go"
end tell
repeat while exists sheet 1 of sheet 1 of sheet 1 of window 1
delay myDelay
end repeat
tell sheet 1 of sheet 1 of window 1
click button "Save"
end tell
repeat while exists sheet 1 of sheet 1 of window 1
delay myDelay
end repeat
repeat while exists sheet 1 of window 1
delay myDelay
end repeat
if shouldCloseWhenFinished then
keystroke "w" using command down
end if
end tell
end tell
end saveAsPDFInSafari