2012-11-24 121 views
2

我試圖製作一個腳本,用safari打開一個swf文件,然後使用內置的「另存爲PDF」功能將其打印爲pdf。到目前爲止,我的代碼如下所示:Mountain Lion上的Applescript GUI

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菜單按鈕,沒有得到任何進一步的莫過於此。我想知道這是不是讓山獅讓我使用蘋果控制按鈕的問題,如果是這樣,是否有修復它?任何幫助將不勝感激!

+0

您也可以嘗試使用[wkpdf](http://plessl.github.com/wkpdf/)創建PDF。 – user495470

回答

1

我剛剛在另一個網站上向某人展示瞭如何在Mail中執行此操作。你可以在帖子#7 here中看到。無論如何,這是根據您的個人資料和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 
+0

謝謝!謝謝你的細節! –