【发布时间】:2015-02-23 01:01:18
【问题描述】:
我有一个包含多个 PSD 文件的 PSD Web 模板,我需要在所有这些文件中替换一个关键字。如果我使用内置的查找和替换,它一次只会替换一个 PSD 文件,而且它不会替换智能对象中的文本。
是否有任何此类脚本可以帮助替换 PSD 中(也包括文件夹中的多个 PSD)中各处(包括智能对象)的关键字?
我在这里找到的最接近的是Find and replace text in multiple Photoshop files?
var dir = new Folder('/c/temp')
var files = dir.getFiles("*.psd");
for (var i = 0; i < files.length; i++) {
var doc = app.open(files[i]);
for (var j= 0; j < doc.artLayers.length; j++) {
var lyr = doc.artLayers[j];
if (lyr.kind == LayerKind.TEXT) {
var lyr = doc.artLayers[j];
lyr.textItem.contents = lyr.textItem.contents.replace("search","replace");
}
}
doc.close(SaveOptions.SAVECHANGES)
}
但由于某种原因,脚本会打开 PSD 文件,然后将其关闭而不做任何更改。我尝试一次播放一行脚本,然后它转到第 10 行 (if (lyr.kind == LayerKind.TEXT) {) 并循环回到第 7 行 (for (var j= 0; j < doc.artLayers.length; j++) {)。
【问题讨论】:
-
您是否在包含不在智能对象中的任何文本层的文档上运行该代码?该代码不会编辑智能对象。
-
是的,我正在尝试的 psd 包含进出智能对象的文本,并且文本不会替换其中的任何内容。不确定。
-
在 lyr.kind == LayerKind.TEXT 行放置一个断点,看看当 'lyr' 是您认为是文本层的图层之一时 lyr.kind 返回的类型。跨度>
标签: javascript photoshop psd photoshop-script