Abriendo una página específica en Mac Preview desde la Terminal

1

Cómo puedo modificar el comando open filename.pdf para poder abrir el número de página deseado directamente sin tener que desplazarme hacia abajo.

    
pregunta envy_intelligence 06.04.2016 - 06:04

1 respuesta

2

Lamentablemente, el comando open no tiene una opción para pasar a Vista previa para decirle que vaya a una página determinada. Además, Preview no tiene un Diccionario de AppleScript para facilitar la creación de scripts, pero no es imposible. El bash script a continuación toma dos argumentos , el filename del documento para abrir y el número de página a ir a . Tenga en cuenta que si el archivo de destino para abrir no se encuentra en el directorio de trabajo en la Terminal, se debe utilizar el nombre de ruta completo.

Necesitará crear un archivo para colocar este código y convertirlo en ejecutable . Debería estar en un directorio que se encuentra en $PATH ; de lo contrario, para usarlo, deberá proporcionar el nombre de ruta completamente calificado al ejecutable o use ./executable si está en el directorio de trabajo del ejecutable en la Terminal.

Para este ejemplo, usar el terminal predeterminado, que se abre en el directorio de inicio de uno:

touch OpenToPage
open OpenToPage

Ahora copie y pegue el código , desde la sección Código: a continuación, en el documento abierto y guárdelo, luego ciérrelo.

Mientras estés en la Terminal, haz el archivo ejecutable :

chmod u+x OpenToPage

Para utilizar OpenToPage :

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

O:

./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: Si el filename y / o pathname del destino tiene espacios, los espacios deben ir con un \ (barra diagonal inversa) o el nombre de archivo del objetivo y o ruta de acceso deben estar entre comillas, pero no ambas.

Los tiempos sleep y delay se pueden ajustar si es necesario. A medida que se escribe el script, los tiempos suman un total de 1.25 segundos a todo el proceso y probablemente debería estar bien tal como está. Si tuviera que ajustar algo, cambiaría el valor de sleep , a .75 o 1 , antes de modificar los valores de delay .

El nombre del archivo bash script en esta respuesta es arbitrario, nómbrelo como quieras, por ejemplo. otp o o2p para abrir a página , etc.

    
respondido por el user3439894 06.04.2016 - 16:54

Lea otras preguntas en las etiquetas