Mac 命令行打开 PDF 到特定页面

Mac 命令行打开 PDF 到特定页面

目标是使用命令行打开 PDF 文件并显示特定页面。更普遍的问题是如何找出任何给定应用程序可用的参数?我能够使用该命令在 Mac OS X 命令行中打开 PDF 文件open,并且知道您可以传递参数,但无法找出打开 PDF 文件并显示第 5 页时要输入的确切参数。

盲目尝试了以下方法,但没有效果......

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

看到这个问题,但解决方案需要安装 evince 或编写 Apple Script。难道没有简单的解决方案,只需在 Mac 中传递 --args,就像在 Windows 命令行中一样?

答案1

我不知道所有 Windows 应用程序都理解命令行参数。

无论是否如此,在 Mac OS 上都不是这种情况。当您使用终端应用程序时,您正在与 BSD 子系统交互,该子系统遵循您期望从 UNIX 或 Linux 操作系统获得的所有模式。

有很多资源可以帮助您熟悉 bash shell 和 *NIX 命令行。为了帮助您入门,该man命令将为您提供您传入的任何命令的手册页。通常,您在命令后输入的所有以空格分隔的“单词”都被视为该命令的参数,至少在您遇到某种输出重定向或控制字符(如|, <, >, )之前&

因此,在您的示例中,您调用open并传入file.pdf--args-page=5作为参数。正如您所观察到的,open不知道如何处理其中的大部分。

无论如何,让我们深入挖掘一下。大多数应用程序(如本例中的 Preview.app)在其应用程序包中的某个位置都有一个可执行文件。您实际上可以执行此 ( /Applications/Preview.app/Contents/MacOS/Preview) 来直接启动 Preview,而无需通过open,但只有某些专门构建的可执行文件才能理解命令行参数。Preview不是其中之一。

man命令仅适用于已安装手册页的命令,这些命令通常仅是 shell$PATH变量中的命令。对于其他可执行文件(通常也适用于标准可执行文件),您可以尝试使用参数调用可执行文件--help以获取使用信息,无论它是否在您的路径中。这不适用于所有情况,但这是一种常见模式。

因此,可能存在一个 PDF 阅读器,其可执行文件可以理解命令行参数,但如果我们仍在使用预览,我们需要转向不同的模式——苹果脚本。您可以在 Wikipedia 上阅读有关它的所有信息,但它的基本原理是,它是一种自然语言脚本语言,允许您以编程方式将 Apple 事件发送到应用程序。一些应用程序实施了广泛的 AppleScript 库,以实现更高的自动化程度。

好消息是,您可以使用 来在命令行中处理 AppleScript osascript。更好消息是,人们已经解决了 AppleScript 问题,即让预览翻页到 PDF 中的某一页:https://discussions.apple.com/thread/3215851

因此,解决问题的方法是:

  1. 设计一个终端命令来在预览中打开你的 PDFopen file.pdf应该可以正常工作。
  2. 测试 AppleScript 以将该 PDF 的页面更改为您指定的页面(使用 Script Editor.app)。
  3. 充分了解命令行,以便设计一个可以一次性执行两个步骤的语句。

相关内容