Applescript per aprire tutti i file in una cartella e convertirli in PDF con Anteprima

3

Ho scritto un AppleScript da fare come descritto nel titolo. Si suppone di andare in una determinata cartella, aprire ciascuno dei file uno alla volta in anteprima, fare clic su "file" sulla barra dei menu, quindi fare clic su "Esporta come PDF ...", quindi fare clic su Invio per accettare la finestra di dialogo che aprirà. Ripeti fino a quando non ci sono più file da automatizzare.

tell application "Finder"
    set fl to files of folder POSIX file "/Users/username/Desktop/Folder" as alias list
end tell
repeat with f in fl
    tell application "Preview"
        open f
        tell application "System Events" to tell process "Preview"
            click menu item "Export as PDF..." of menu 1 of menu bar item "File" of menu bar 1
        end tell
        keystroke return
    end tell
end repeat

Viene visualizzato il seguente errore quando viene eseguito, apre il file in Anteprima e si arresta. Qualche idea?

L'errore non è molto descrittivo.

    
posta JamesDonnelly 27.09.2017 - 22:36
fonte

1 risposta

2

Deve essere "Export as PDF…" non "Export as PDF..." , nota che il primo esempio ha un'ellissi reale, non come nel tuo codice, il secondo esempio, tre punti dopo PDF .

Inoltre, come esempio in Anteprima sotto macOS 10.12.5 Sierra che ho provato sotto, puoi anche usare:

tell application "System Events" to tell process "Preview"
    click menu item 14 of of menu 1 of menu bar item "File" of menu bar 1
end tell

Nota: Ovviamente sotto diverse versioni di OS X / macOS "Esporta come PDF ..." può essere un diverso menu item numero o che comando non può esiste in quella forma.

Per indirizzare il commento, utilizzerei quanto segue invece di ciò che hai attualmente:

tell application "System Events"
    click menu item "Export as PDF…" of menu 1 of menu bar item "File" of menu bar 1 of application process "Preview"
    delay 0.2
    click button "Save" of sheet 1 of window 1 of application process "Preview"
end tell

Lasciando keystroke return dal codice .

Nota: potrebbe essere necessario modificare il valore del comando delay per il sistema.

    
risposta data 27.09.2017 - 23:19
fonte

Leggi altre domande sui tag