InDesign使用Javascript更改文本笔触颜色

时间:2017-05-30 06:52:58

标签: javascript adobe-indesign

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

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

选择图层“Relieflack”但使用

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

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

InDesign Layer

任何提示?

2 个答案:

答案 0 :(得分:1)

以下代码应更改文本“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";

答案 1 :(得分:0)

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

&#13;
&#13;
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" );
&#13;
&#13;
&#13;