Photoshop 脚本:如何按名称导出 PathItem
Photoshop Scripting: How to export PathItem by its name
我拼命想弄清楚如何为 photoshop 编写一个 js,它只导出一个特定的路径,而不是我的 PS 文档中“路径”选项卡下的所有包含路径到 Illustrator文件。
例如这里的图片:
我只想使用脚本导出名称为“2 Acryl”的路径。
我已经有了一个可以将所有路径导出到一个 AI 文件中的工作脚本。
我只是不知道如何通过名称引用单个路径并将其导出。
function unSaved() {
try {
activeDocument.path;
/* Finish Unsaved Document Error Check - Part A: Try */
/* Main Code Start */
/* Based on the following topic thread:
https://community.adobe.com/t5/photoshop/exporting-all-paths-to-illustrator-error/m-p/8796143 */
var doc = app.activeDocument;
var docPath = doc.path;
var docName = doc.name.replace(/\.[^\.]+$/, '');
var newFile = File(docPath + '/' + docName + '_Paths' + '.ai');
var expOptions = new ExportOptionsIllustrator;
expOptions.path = IllustratorPathType.ALLPATHS;
doc.exportDocument(newFile, ExportType.ILLUSTRATORPATHS, expOptions);
// alert('All Photoshop paths have been exported as a single Illustrator file in:' + '\r' + docPath);
/* Main Code Finish */
/* Start Unsaved Document Error Check - Part B: Catch */
} catch (err) {
alert('An image must be both open and/or saved before running this script!')
}
}
这可以通过根据需要更改 ExportOptionsIllustrator 对象来完成。
var expOptions = new ExportOptionsIllustrator;
要导出单个路径,ExportOptionsIllustrator.path 属性 必须设置为
expOptions.path = IllustratorPathType.NAMEDPATH;
之后,您可以使用名称选择您想要的路径:
expOptions.pathName = '2 Acryl';
编辑:
显然由于 Photoshop 本身的错误,导出选项 IllustratorPathType.NAMEDPATH 被简单地忽略了。无论如何,Photoshop 总是会导出所有路径。
这里有一个 hacky 解决方法。 Photoshop 脚本提供 PathItems 对象,其中包含文档中所有路径的列表。所以想法是这样的:
- 创建当前文档的克隆
- 遍历克隆中的所有路径
- 删除除您要保留的单个路径之外的所有内容
- 将克隆的路径导出为 Illustrator 文件
- 关闭克隆而不保存
这是更新后的脚本:
try {
var doc = app.activeDocument;
var docPath = doc.path;
var docName = doc.name.replace(/\.[^\.]+$/, '');
var newFile = File(docPath + '/' + docName + '_Paths' + '.ai');
var expOptions = new ExportOptionsIllustrator;
var duplicate = app.activeDocument.duplicate('duplicate');
for(a = duplicate.pathItems.length-1; a>=0; a--)
{
if(duplicate.pathItems[a].name != '2 Acryl')
{
duplicate.pathItems[a].remove();
}
}
duplicate.exportDocument(newFile, ExportType.ILLUSTRATORPATHS, expOptions);
duplicate.close(SaveOptions.DONOTSAVECHANGES);
} catch (err) {
alert('An image must be both open and/or saved before running this script!')
}
编辑2:
如果还是不行,那就只有最后一招了。 Photoshop 具有将路径导出到 Illustrator 的内置功能。只需前往:
文件 * 导出 * 路径 -> Illustrator...
然后在弹出的对话框中选择你想要的路径。
仅作记录:@obscure的第一个答案编辑效果很好。如果它不适用于确切的代码,请尝试在以下之后添加延迟:
duplicate.exportDocument(newFile, ExportType.ILLUSTRATORPATHS, expOptions);
在关闭 ps 文件之前,或者只是不执行关闭 ps 文档的代码行。
再次感谢!
我拼命想弄清楚如何为 photoshop 编写一个 js,它只导出一个特定的路径,而不是我的 PS 文档中“路径”选项卡下的所有包含路径到 Illustrator文件。 例如这里的图片:
我只想使用脚本导出名称为“2 Acryl”的路径。 我已经有了一个可以将所有路径导出到一个 AI 文件中的工作脚本。 我只是不知道如何通过名称引用单个路径并将其导出。
function unSaved() {
try {
activeDocument.path;
/* Finish Unsaved Document Error Check - Part A: Try */
/* Main Code Start */
/* Based on the following topic thread:
https://community.adobe.com/t5/photoshop/exporting-all-paths-to-illustrator-error/m-p/8796143 */
var doc = app.activeDocument;
var docPath = doc.path;
var docName = doc.name.replace(/\.[^\.]+$/, '');
var newFile = File(docPath + '/' + docName + '_Paths' + '.ai');
var expOptions = new ExportOptionsIllustrator;
expOptions.path = IllustratorPathType.ALLPATHS;
doc.exportDocument(newFile, ExportType.ILLUSTRATORPATHS, expOptions);
// alert('All Photoshop paths have been exported as a single Illustrator file in:' + '\r' + docPath);
/* Main Code Finish */
/* Start Unsaved Document Error Check - Part B: Catch */
} catch (err) {
alert('An image must be both open and/or saved before running this script!')
}
}
这可以通过根据需要更改 ExportOptionsIllustrator 对象来完成。
var expOptions = new ExportOptionsIllustrator;
要导出单个路径,ExportOptionsIllustrator.path 属性 必须设置为
expOptions.path = IllustratorPathType.NAMEDPATH;
之后,您可以使用名称选择您想要的路径:
expOptions.pathName = '2 Acryl';
编辑:
显然由于 Photoshop 本身的错误,导出选项 IllustratorPathType.NAMEDPATH 被简单地忽略了。无论如何,Photoshop 总是会导出所有路径。
这里有一个 hacky 解决方法。 Photoshop 脚本提供 PathItems 对象,其中包含文档中所有路径的列表。所以想法是这样的:
- 创建当前文档的克隆
- 遍历克隆中的所有路径
- 删除除您要保留的单个路径之外的所有内容
- 将克隆的路径导出为 Illustrator 文件
- 关闭克隆而不保存
这是更新后的脚本:
try {
var doc = app.activeDocument;
var docPath = doc.path;
var docName = doc.name.replace(/\.[^\.]+$/, '');
var newFile = File(docPath + '/' + docName + '_Paths' + '.ai');
var expOptions = new ExportOptionsIllustrator;
var duplicate = app.activeDocument.duplicate('duplicate');
for(a = duplicate.pathItems.length-1; a>=0; a--)
{
if(duplicate.pathItems[a].name != '2 Acryl')
{
duplicate.pathItems[a].remove();
}
}
duplicate.exportDocument(newFile, ExportType.ILLUSTRATORPATHS, expOptions);
duplicate.close(SaveOptions.DONOTSAVECHANGES);
} catch (err) {
alert('An image must be both open and/or saved before running this script!')
}
编辑2:
如果还是不行,那就只有最后一招了。 Photoshop 具有将路径导出到 Illustrator 的内置功能。只需前往:
文件 * 导出 * 路径 -> Illustrator...
然后在弹出的对话框中选择你想要的路径。
仅作记录:@obscure的第一个答案编辑效果很好。如果它不适用于确切的代码,请尝试在以下之后添加延迟:
duplicate.exportDocument(newFile, ExportType.ILLUSTRATORPATHS, expOptions);
在关闭 ps 文件之前,或者只是不执行关闭 ps 文档的代码行。
再次感谢!