使用Javascript将阴影添加到InDesign中的所有选定项目

时间:2017-04-19 13:48:56

标签: javascript adobe-indesign

尝试弄清楚如何在InDesign CC中向页面上的所有选定项目添加投影。这就是我所拥有的,但它说“Undefined不是一个对象。”

myDS = app.select(SelectAll.ALL);
myDS.dropShadowSettings.mode = ShadowMode.drop;
myDS.dropShadowSettings.angle = .0083;
myDS.dropShadowSettings.xOffset = 0.08;
myDS.dropShadowSettings.yOffset = 0.08;
myDS.dropShadowSettings.size = 0.6;

2 个答案:

答案 0 :(得分:2)

然后就是这样(虽然我更喜欢检查项目是否具有应用的对象样式,如果是这样的话,请编辑对象样式本身。然后我会查看项目是否已经处理了样式以获得性能。但要简要说明:



var allPageItems  = doc.allPageItems;
var n = allPageItems.length;
while ( n-- ) process ( allPageItems[n] );
function process ( item) {
	if ( !item.properties.transparencySettings ) return;
	item.transparencySettings.dropShadowSettings.mode = ShadowMode.NONE;
}




答案 1 :(得分:1)

通过使用" select all",返回的对象是一个经典数组,其中dropShadowSettings不是有效属性,因此是错误。 我建议应用对象样式,而不是直接设置道具。这样,您就可以手动编辑样式并查看以前正在更新的相关对象。



var doc = app.activeDocument;
var os = doc.objectStyles.itemByName ( "myDropShadow" );
!os.isValid && os = doc.objectStyles.add ( {
	name:"myDropShadow",
	transparencySettings:{
		dropShadowSettings:{
			mode:ShadowMode.drop,
			angle : .0083,
			xOffset : 0.08,
			yOffset : 0.08,
			size : 0.6,
		}
	}
});
app.activeDocument.pageItems.everyItem().appliedObjectStyle = os;




顺便说一句,最好不要使用复制/粘贴/选择等UI命令,因为它们非常耗时,而且dom本身也有替代方案。