AppleScript写入PDF后无法用Preview打开的问题求助
解决AppleScript中Preview无法打开已写入PDF的问题
你的问题核心是类型不匹配:writeToURL: 接受的是Cocoa的NSURL对象,但Preview的open命令只识别AppleScript原生的file/alias类型,或者正确转换后的路径引用。
为什么之前的尝试失败
- 直接
open targetFile:targetFile是NSURL对象,Preview无法识别这个Cocoa类型,自然打不开。 open POSIX path of targetFile:POSIX path of只能用于AppleScript的file/alias对象,不能作用于NSURL,这行代码本身会抛出类型错误。
正确的解决方案
如果targetFile是从Cocoa方法得到的NSURL对象,先把它转换为AppleScript能识别的路径引用:
-- 从NSURL中提取POSIX路径字符串 set targetPosixPath to targetFile's |path|() as string tell application "Preview" activate -- 将POSIX路径转为AppleScript file对象并打开 open POSIX file targetPosixPath end tell
额外建议
- 验证文件存在:在打开前可以先检查文件是否真的写入成功,避免因写入失败导致的问题:
set targetPosixPath to targetFile's |path|() as string if exists POSIX file targetPosixPath then tell application "Preview" activate open POSIX file targetPosixPath end tell else display dialog "文件未找到:" & targetPosixPath end if - 提前统一类型:如果可以,在创建目标路径时就用AppleScript原生的
file对象,后续操作更顺畅:-- 定义AppleScript file对象 set targetFile to file "/Users/你的用户名/Desktop/test.pdf" -- 转为NSURL供writeToURL使用 set nsTargetURL to current application's NSURL's fileURLWithPath:(POSIX path of targetFile) -- 写入PDF theDocument's writeToURL:nsTargetURL -- 直接用Preview打开 tell application "Preview" activate open targetFile end tell
内容的提问来源于stack exchange,提问作者Armin Hierstetter
相关产品推荐
相关产品推荐

