Abrindo uma página específica no Mac Preview do Terminal

1

Como eu posso modificar o open filename.pdf comando para que eu possa abrir um número de página desejado diretamente sem ter que rolar para baixo.

envy_intelligence
fonte

Respostas:

2

Infelizmente, o open comando não tem um opção para passar para a Pré-visualização para dizer-lhe para ir a uma determinada página. Além disso, o Preview não possui um Dicionário AppleScript para facilitar a criação de scripts, mas não é impossível. o script bash abaixo leva dois argumentos , a nome do arquivo do documento para abrir e a número de página para vamos para . Observe que, se o arquivo de destino abrir não está no diretório de trabalho no Terminal, em seguida, o totalmente qualificado nome do caminho deve ser usado.

Você precisará criar um arquivo para colocar código em e torná-lo executável . Deve estar em um diretório que está no $PATH, caso contrário, para usá-lo, você terá que fornecer o totalmente qualificado nome do caminho ao executável ou usar ./executable se no diretório de trabalho do executável no terminal.

Para este exemplo, usando o Terminal padrão, que se abre para o Diretório Pessoal:

touch OpenToPage
open OpenToPage

Agora copie e cole o código , de Código: seção abaixo, no documento aberto, salve-o e feche-o.

Enquanto ainda no Terminal, faça o arquivo executável :

chmod u+x OpenToPage

Usar OpenToPage:

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

Ou:

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

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

Código:

#!/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

Notas: Se o alvo nome do arquivo e ou nome do caminho tem espaços, os espaços devem ser escapados com um \ (barra invertida) ou o alvo nome do arquivo e ou nome do caminho deve ser citado, mas não ambos.

o sleep e delay os tempos podem ser ajustados se / conforme necessário. Como o roteiro está atualmente escrito, os tempos somam 1,25 segundo no total do processo e provavelmente devem estar bem como estão. Se eu tivesse que ajustar alguma coisa eu mudaria o valor de sleep, para .75 ou 1, antes de modificar os valores de delay.

A nomeação do script bash arquivo nesta resposta é arbitrário, nomeie-o como quiser, por exemplo otp ou o2p para abrir para a página etc.

user3439894
fonte