Línea de comandos de Mac Abrir PDF a página específica

2

El objetivo es utilizar la línea de comandos para abrir un archivo PDF en una página específica. La pregunta más general es ¿cómo puedo saber qué argumentos están disponibles para una aplicación determinada? Puedo abrir un archivo pdf en la línea de comandos de Mac OS X con el opencomando, y sé que puede pasar argumentos, pero no pude averiguar los argumentos exactos para abrir el archivo PDF en la página 5.

Intenté lo siguiente a ciegas, y no funcionó ...

open file.pdf --args -page=5
open file.pdf --args -p 5
open file.pdf --args -page 5

He visto esta pregunta , pero la solución requiere instalar evince o escribir Apple Script. ¿No hay una solución fácil simplemente pasando --args en Mac al igual que en la línea de comandos de Windows?

tomate
fuente
1
Estás llamando al opencomando. Para ver qué argumentos puede aceptar, escriba man open.
NReilingh
Gracias por el comentario, pero ¿podría explicar un poco más? Pensé que man openda los argumentos para el comando open, que van todos antes del nombre del archivo, por ejemplo, -apara especificar la aplicación. Pero pensé que necesitaba llamar a '--args' para pasar algún tipo de parámetro de página al lector de PDF en este caso. No sé qué argumentos podría pasar? Si pudieras dar un ejemplo que sería muy apreciado ...
tomate

Respuestas:

4

No tenía idea de que todas las aplicaciones de Windows entendían los argumentos de la línea de comandos.

Si ese es el caso o no, no es el caso en Mac OS. Cuando utiliza la aplicación Terminal, está interactuando con un subsistema BSD que sigue todos los patrones que esperaría de un sistema operativo UNIX o Linux.

Existen abundantes recursos para familiarizarse con el shell bash y la línea de comandos * NIX. Para comenzar, el mancomando le dará la página de manual de cualquier comando que ingrese. Generalmente, todas las "palabras" separadas por espacios que escribe después de un comando se tratan como argumentos para ese comando, al menos hasta que llegue a algún tipo de redirección de salida o el carácter de control como |, <, >, &.

Así que en su ejemplo, estuviera llamando openy pasando file.pdf, --argsy -page=5como argumentos. Como has observado, openno sabe qué hacer con la mayoría de estos.

De todos modos, profundicemos. La mayoría de las aplicaciones (como Preview.app en este caso) tienen un archivo ejecutable en algún lugar de su paquete de aplicaciones. En realidad, puede ejecutar this ( /Applications/Preview.app/Contents/MacOS/Preview) para iniciar la Vista previa directamente sin pasar open, pero solo ciertos ejecutables diseñados específicamente comprenderán los argumentos de la línea de comandos. PreviewNo es uno de ellos.

El mancomando solo funciona para los comandos que tienen instaladas páginas de manual, y generalmente solo serán comandos en la $PATHvariable de su shell . Para otros ejecutables, (y generalmente también para los estándar), puede intentar llamar al ejecutable con un --helpargumento para obtener información de uso, ya sea que esté o no en su ruta. Esto no funcionará para todo, pero es un patrón común.

Por lo tanto, puede haber un lector de PDF por ahí cuyo ejecutable entienda los argumentos de la línea de comandos, pero si todavía estamos trabajando con Vista previa, tenemos que cambiar a un paradigma diferente: AppleScript . Puede leerlo todo en Wikipedia, pero lo básico es que es un lenguaje de script de lenguaje natural que le permite enviar eventos de Apple mediante programación a las aplicaciones. Algunas aplicaciones implementan extensas bibliotecas AppleScript para permitir una mayor automatización.

La buena noticia aquí es que puede procesar AppleScript en la línea de comandos con osascript. Aún más buenas noticias es que la gente ya ha resuelto su problema de AppleScript de hacer que Vista previa pase a una página en un PDF aquí: https://discussions.apple.com/thread/3215851

Entonces, ¿cuál debería ser su enfoque para resolver su problema?

  1. Diseñar un comando de terminal para abrir su PDF en Vista previa open file.pdfdebería funcionar bien.
  2. Pruebe un AppleScript para cambiar la página de ese PDF a la que especifique (use Script Editor.app).
  3. Aprenda lo suficiente sobre la línea de comando para diseñar una declaración que ejecutará ambos pasos de una vez.
NReilingh
fuente
Esta sigue siendo una solución que usa AppleScript. Pero confirma que no puedes hacer una simple línea de comando ... ¡gracias!
tomate