InDesign 使用 Javascript 更改文本描边颜色

InDesign changing Text Stroke Color with Javascript

我想在 JavaScript 中更改 "Ortsname" 的颜色, 我正在使用:

var relieflackEbene = myDoc.layers.itemByName('Relieflack');

到select层"Relieflack"但是当使用

relieflackEbene.pageItems.firstItem().strokeColor = "Relieflack";

实际上我不想使用 "firstItem()" 因为它可能不是该层上的第一个项目。 但它改变的是文本框的颜色,而不是其中文本的颜色。

有什么提示吗?

以下代码应更改文本的描边颜色 "Ortsname"。

for (var i=0, len=relieflackEbene.pageItems.length; i < len ; i++) {
  if (relieflackEbene.pageItems[i].parentStory.contents === "Ortsname") {
    relieflackEbene.pageItems[i].parentStory.strokeColor = "Relieflack"
  }
};

如果您想更改图层中所有文本框的文本,试试这个

relieflackEbene.pageItems.everyItem().texts.everyItem().strokeColor = "Relieflack";

或者您可以使用 changeText 方法,除非它太宽:

var main = function() {
 var doc = app.properties.activeDocument,
 ftp = app.findTextPreferences.properties,
 ctp = app.changeTextPreferences.properties,
 color;
 if ( !doc ) return;
 
 color= doc.swatches.itemByName ( "Relieflack" );
 
 if ( !color.isValid ) {
  alert("Color \"Relieflack\" is required.");
  return;
 }

 app.findTextPreferences = app.changeTextPreferences = null;
 
 app.findTextPreferences.properties = {
  findWhat:"Ortsname",
 };

 app.changeTextPreferences.properties = {
  strokeColor:color,
 };

 doc.changeText();
 
 app.findTextPreferences.properties = ftp;
 app.changeTextPreferences.properties = ctp;
}

var u;

app.doScript ( "main()",u,u,UndoModes.ENTIRE_SCRIPT, "The Script" );