小牛 - 告诉应用程序“预览”打开PDF - 奇怪的权限问题


4

我最近将一个大型的PDF文件集合从Snow Leopard 10.6.8 TimeMachine磁盘移动到我的新rMBP(到内部闪存存储器)。我手动完成此操作,而不是通过TimeMachine界面。rMBP运行小牛10.9.3。

当我双击PDF时,它们在预览中打开没有问题。

但是,当我写一个小AppleScript来打开一个,例如:

tell application "Preview"
    activate
    open "/Users/me/Desktop/test.pdf"
end tell

我在执行AppleScript时遇到以下错误:

无法打开文件“test.pdf”,因为您无权查看它。要查看或更改权限,请在Finder中选择项目,然后选择“文件”>“获取信息”。

我查看Get Info for test.pdf。在“共享和权限”选项卡中,无论我设置权限是什么,即使所有用户都可以读取和写入文件,我仍然会收到错误。

相反,如果我从互联网上下载PDF,直接到桌面,并执行AppleScript打开它,它会在预览中打开而不会出现问题。

(ps我需要通过AppleScript打开PDF,作为我拥有的更大系统的一部分,我不仅仅是为了好玩!)


1
尝试使用“sudo”
Ruskes

1
你尝试过使用类似的东西do shell script open -a Preview /Users/me/Desktop/test.pdf吗?
Édouard2014年

Answers:


2

对我来说做shell脚本..失败了,但下面这个有用了。

set filepath to POSIX path of "Users:student:Desktop:Yourfile.pdf" try set command to "open " & quoted form of filepath do shell script command end try

注意:对于我使用“/”的文件路径而不是“:”,可以尝试修改。

代码来源:MacRumors


1
我确认这个解决方案对我也有用。
爱迪生1093年

@ edison1093你可以给出答案吗?如果解决方案有效。
好奇的Monkey

如果你想覆盖这个文件或类似文件,我就这样工作:set file_path to POSIX path of "Users:student:Desktop:Yourfile.pdf" tell application id "com.apple.Preview" activate set theDocument to open quoted form of file_path save theDocument in file_path
cd-rum 2015年

0

爱德华提供的评论解决了这个问题。奇怪的是,使用命令行启动预览会绕过权限问题。

以下是经过修改的AppleScript,对PDF文件具有健壮性,其名称中包含空格:

    do shell script "open -a Preview " & quoted form of "/Users/me/Desktop/this has spaces and 'punctuation'.pdf"

0

我现在遇到类似预览的问题。我从Apple下载了一些文件。我可以在Finder中使用Quicklook查看其内容,但不能使用预览打开,尽管能够在Get Info to Everyone Read + Write中设置权限。

我检查并在同一文件夹中的其他文件现在遇到此问题。看着终端显示出了什么变化,虽然我不知道为什么

drwxr-xr-x    5 andydent  501       170 22 Jul 00:21 Android
drwx------  182 andydent  501      6188  2 Sep 23:08 Apple various
drwxr-xr-x@   5 andydent  501       170 23 Dec  2007 AppleScript

苹果的各种目录权限似乎有点奇怪,虽然作为老板,我没想到丢失的权限会有所作为。

更改目录的权限不起作用。

将文件复制到其他位置不起作用。

使用sudo open iTunesConnect_Guide.pdf不起作用 - 我仍然在预览中有一个错误对话框。

但是,当我退出并重新启动预览时,它可以毫无问题地打开这些文件。它可能很简单 - 只需退出应用程序。

我在系统上经历了奇怪的Finder减速,旋转器在打开目录时会持续很多秒钟。我不知道这两个问题是否相关。我也想知道这是否与重新启动设置重新打开窗口有某种关系。


正如Andy Dent所提到的那样,在Mac OS X Mavericks 10.9.5上退出并重新启动预览适用于我
zyxue 2014年

0

此问题是由Apple的预览沙盒(以及其他应用程序)引起的。如果您只是将字符串传递给打开,则预览不会获得访问PDF的权利。来自Apple的发行说明

兼容性说明

将命令发送到沙盒应用程序(例如OS X Mountain Lion中的TextEdit)时,引用文件的参数必须是明确的类文件类型而不是裸字符串,否则目标应用程序将无法访问该文件。例如,文件“Macintosh HD:Users:me:sample.txt”,POSIX文件“/Users/me/sample.txt”或选择文件的结果都可以接受,但是字符串“/ Users / me / sample.txt“不会。

为什么这适用于Downloads文件夹中的文件?当您手动打开文件时,应用程序将保留打开它的权利(例如,在“最近”中)。因此,如果您尝试已经打开的任何文件,可能会有效,但它不适用于新文件。

要修复,请将代码更改为:

tell application "Preview"
    activate
    open POSIX file "/Users/me/Desktop/test.pdf"
end tell

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.