如何在 macOS 预览应用程序中使用 JavaScript for Automator (JXA) 保存图像?
How can an image be saved with JavaScript for Automator (JXA) in macOS Preview application?
预览应用程序中打开了一张图片,但未保存。
我已经通过在脚本编辑器中构建和 运行 独立脚本来尝试此代码:
var preview = Application('Preview')
var preview.documents[0].close({ saving: true, savingIn: '/Volumes/USB Drive/Untitled-Image.png' })
我在日志中看到了这个
app = Application("Preview")
app.documents.at(0).Symbol.toPrimitive()
--> Error -1700: Can't convert types.
app.documents.at(0).Symbol.toPrimitive()
--> Error -1700: Can't convert types.
但是,我不确定自己是否正确阅读了文档,也不确定如何进一步调试此代码。一个令人满意的替代方法是发送击键进行保存,然后单击“保存”按钮。
如何将预览中的图像保存到文件中?
可以使用 Path('...')
在 JavaScript 中推测性地声明路径,然后使用 save
命令将图像保存到将在该路径创建的文件中:
Preview = Application('com.apple.Preview');
ImageFilepath = Path('/Users/CK/Pictures/Preview_SavedImage.jpg');
Preview.documents[0].save({ in: ImageFilepath });
这段代码对我有用。
var preview = Application('Preview')
var photo = preview.documents[0]
photo.close({ saving: 'yes', savingIn: Path("/Path/To Some/file_name.png") })
执行后,在脚本编辑器的回复日志中 window,会记录一些与问题样本略有不同的内容。
app = Application("Preview")
app.close(app.documents.at(0), {savingIn:Path("/Path/To Some/file_name.png"), saving:"yes"})
我通过研究其中的 scripting dictionary for macOS Mojave 10.14 as well as the Release Notes for JXA; there is a similar example under Passing Event Modifiers 部分弄明白了这一点。
来自脚本编辑器脚本字典,这是标准套件中 close
方法的条目:
close method : Close a document.
close specifier : the document(s) or window(s) to close.
[saving: "yes"/"no"/"ask"] : Should changes be saved before closing?
[savingIn: File] : The file in which to save the document, if so.
请注意此处的工作代码与问题中的代码之间的主要区别:
- 将
savingIn
选项传递给 close
时指定 Path object。
- 将保存选项指定为 "yes"、"no" 或 "ask"(不是
true
)之一。
如果您是 JXA、Automator、and/or Mac 脚本编辑器的新手,请查看 JXA Cookbook。
如果这个答案对您有帮助,那么您可能过得很不开心,祝您好运!
预览应用程序中打开了一张图片,但未保存。
我已经通过在脚本编辑器中构建和 运行 独立脚本来尝试此代码:
var preview = Application('Preview')
var preview.documents[0].close({ saving: true, savingIn: '/Volumes/USB Drive/Untitled-Image.png' })
我在日志中看到了这个
app = Application("Preview")
app.documents.at(0).Symbol.toPrimitive()
--> Error -1700: Can't convert types.
app.documents.at(0).Symbol.toPrimitive()
--> Error -1700: Can't convert types.
但是,我不确定自己是否正确阅读了文档,也不确定如何进一步调试此代码。一个令人满意的替代方法是发送击键进行保存,然后单击“保存”按钮。
如何将预览中的图像保存到文件中?
可以使用 Path('...')
在 JavaScript 中推测性地声明路径,然后使用 save
命令将图像保存到将在该路径创建的文件中:
Preview = Application('com.apple.Preview');
ImageFilepath = Path('/Users/CK/Pictures/Preview_SavedImage.jpg');
Preview.documents[0].save({ in: ImageFilepath });
这段代码对我有用。
var preview = Application('Preview')
var photo = preview.documents[0]
photo.close({ saving: 'yes', savingIn: Path("/Path/To Some/file_name.png") })
执行后,在脚本编辑器的回复日志中 window,会记录一些与问题样本略有不同的内容。
app = Application("Preview")
app.close(app.documents.at(0), {savingIn:Path("/Path/To Some/file_name.png"), saving:"yes"})
我通过研究其中的 scripting dictionary for macOS Mojave 10.14 as well as the Release Notes for JXA; there is a similar example under Passing Event Modifiers 部分弄明白了这一点。
来自脚本编辑器脚本字典,这是标准套件中 close
方法的条目:
close method : Close a document.
close specifier : the document(s) or window(s) to close.
[saving: "yes"/"no"/"ask"] : Should changes be saved before closing?
[savingIn: File] : The file in which to save the document, if so.
请注意此处的工作代码与问题中的代码之间的主要区别:
- 将
savingIn
选项传递给close
时指定 Path object。 - 将保存选项指定为 "yes"、"no" 或 "ask"(不是
true
)之一。
如果您是 JXA、Automator、and/or Mac 脚本编辑器的新手,请查看 JXA Cookbook。
如果这个答案对您有帮助,那么您可能过得很不开心,祝您好运!