从智能对象和图层替换Photoshop中的关键字

Replace keyword in Photoshop from Smart Objects and Layers

本文关键字:Photoshop 关键字 替换 图层 智能 对象      更新时间:2024-03-27

我有一个包含多个PSD文件的PSD Web模板,我需要替换所有文件中的一个关键字。如果我使用内置的Find&替换它一次只替换一个PSD文件,而且它不会替换智能对象中的文本。

有没有这样的脚本可以帮助替换PSD(也可以在文件夹中的多个PSD中)中各处的关键字(包括智能对象)?

我在这里找到的最接近的是在多个Photoshop文件中查找并替换文本?

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++) {)。

至少在Photoshop I脚本化的最后一个版本中,智能对象不是DOM的一部分-您必须使用scriptlistener代码来访问这些对象的内容。

因此,下面的代码片段应该开始编辑智能对象:

var id401 = stringIDToTypeID( "placedLayerEditContents" );
    var desc24 = new ActionDescriptor();
executeAction( id401, desc24, DialogModes.NO );

从那里你需要循环通过新的活动文档中的所有层,这些层应该包含你的智能对象的内容,根据需要进行修改并保存&关闭它会将活动文档返回到原始文档。根据智能对象的嵌套方式,您可能需要多次执行此操作。