Wie kann ich den open filename.pdf
Befehl so ändern, dass ich eine gewünschte Seitennummer direkt öffnen kann, ohne nach unten scrollen zu müssen.
Leider hat der open
Befehl keine Option , um an die Vorschau zu übergeben, um ihm mitzuteilen, dass er zu einer bestimmten Seite gehen soll. Darüber hinaus verfügt Preview nicht über ein AppleScript-Wörterbuch, um das Skripten einer Lösung zu vereinfachen, dies ist jedoch nicht unmöglich. Das folgende Bash - Skript benötigt zwei Argumente , den Dateinamen des zu öffnenden Dokuments und die Seitenzahl , zu der gewechselt werden soll . Beachten Sie, dass der vollständig qualifizierte Pfadname verwendet werden muss, wenn sich die zu öffnende Zieldatei nicht im Arbeitsverzeichnis von Terminal befindet.
Sie müssen eine Datei erstellen, in die dieser Code eingefügt und ausführbar gemacht werden kann . Es sollte sich in einem Verzeichnis befinden , das sich in der befindet $PATH
, andernfalls müssen Sie, um es zu verwenden, den vollständig qualifizierten Pfadnamen zur ausführbaren Datei angeben oder ./executable
if im Arbeitsverzeichnis der ausführbaren Datei in Terminal verwenden.
Verwenden Sie für dieses Beispiel das Standard-Terminal, das das eigene Home-Verzeichnis öffnet:
touch OpenToPage
open OpenToPage
Kopieren Sie nun den Code und fügen Sie ihn aus dem Abschnitt Code: unten in das geöffnete Dokument ein, speichern Sie es und schließen Sie es dann.
Während Sie sich noch im Terminal befinden, machen Sie die Datei ausführbar :
chmod u+x OpenToPage
Zu verwenden OpenToPage
:
./opentopage /path/name/to/filename.pdf 3
Oder:
./opentopage '/path/name/to/file name.pdf' 3
./opentopage /path/name/to/file\ name.pdf 3
Code:
#!/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
Hinweise: Wenn der Zieldateiname und /oder Pfadname Leerzeichen enthält, müssen die Leerzeichen mit einem \
(umgekehrten Schrägstrich) maskiert werden, oder der Zieldateiname und /oder Pfadname müssen in Anführungszeichen gesetzt werden, aber nicht beides.
Die Zeiten sleep
und delay
können bei Bedarf angepasst werden. Da das Skript derzeit geschrieben wird, fügt das Timing dem gesamten Prozess insgesamt 1,25 Sekunden hinzu und sollte wahrscheinlich so wie es ist in Ordnung sein. Wenn ich irgendetwas anpassen müsste, würde ich den Wert von sleep
, in .75
oder ändern 1
, bevor ich die Werte von ändere delay
.
Die Benennung der Bash- Skriptdatei in dieser Antwort ist beliebig, benennen Sie sie beliebig, z. B. otp
oder o2p
für open to page usw.
sjy
sleep
unddelay
s entfernt wurden.sjy
Benutzer3439894