Apertura di una pagina specifica su Mac Preview dal terminale

1

Come posso modificare il comando open filename.pdf in modo da poter aprire direttamente il numero di pagina desiderato senza dover scorrere verso il basso.

    
posta envy_intelligence 06.04.2016 - 06:04
fonte

1 risposta

2

Sfortunatamente il comando open non ha un'opzione da passare ad Anteprima per dirgli di andare a una determinata pagina. Inoltre, Anteprima non ha un dizionario AppleScript per semplificare la creazione di script, tuttavia non è impossibile. Lo script di bash sotto prende due argomenti , il nomefile del documento in aperto e il numero di pagina a vai a . Nota che se il file di destinazione per aprire non si trova nella directory di lavoro in Terminale, deve essere utilizzato il nome di percorso completamente qualificato.

Dovrai creare un file per inserire questo codice e renderlo eseguibile . Dovrebbe essere in una directory che si trova in $PATH , altrimenti, per utilizzarlo, dovrai fornire il pathname completo all'eseguibile o usa ./executable se nella directory di lavoro dell'eseguibile nel Terminale.

Per questo esempio, utilizzando il terminale predefinito, che si apre sulla propria Home directory:

touch OpenToPage
open OpenToPage

Ora copia e incolla il codice , dalla sezione Codice: in basso, nel documento aperto e salvalo, quindi chiudilo.

Mentre sei ancora in Terminal, rendi il file eseguibile :

chmod u+x OpenToPage

Per utilizzare OpenToPage :

./opentopage /path/name/to/filename.pdf 3

Oppure:

./opentopage '/path/name/to/file name.pdf' 3

./opentopage /path/name/to/file\ name.pdf 3

Codice:

#!/bin/bash

if [[ -z $2 ]]; then
    [[ -z $1 ]] && printf "\n Missing Filename..."
    printf "\n Missing Page Number...\n\n"
    printf "   Syntax: OpenToPage Filename Page_Number\n"
    printf "   Example: OpenToPage Filename.pdf 3\n\n"
    exit 1
else
    open -a Preview "$1"
    sleep .5
    osascript -e 'tell application "Preview" to activate' \
              -e 'delay 0.25' \
              -e 'tell application "System Events" to tell process "Preview" to click menu item "Go to Page…" of menu "Go" of menu bar 1' \
              -e 'delay 0.25' \
              -e "tell application \"System Events\" to keystroke \"$2\"" \
              -e 'delay 0.25' \
              -e 'tell application "System Events" to key code 36'
fi
exit 0

Note: Se il target nomefile e nome percorso ha spazi, gli spazi devono essere preceduti da escape con \ (barra rovesciata) o il nomefile di destinazione eo percorso devono essere citati, ma non entrambi.

Le sleep e delay volte possono essere regolate se / secondo necessità. Poiché lo script è attualmente scritto, i tempi aggiungono 1,25 secondi in totale all'intero processo e probabilmente dovrebbe andare bene così com'è. Se dovessi aggiustare qualcosa cambierei il valore di sleep , a .75 o 1 , prima di modificare i valori di delay .

La denominazione del file bash script in questa risposta è arbitraria, nominala come preferisci, ad es. otp o o2p per aperto alla pagina , ecc.

    
risposta data 06.04.2016 - 16:54
fonte

Leggi altre domande sui tag