使用JavaScript将Drop Shadow添加到Indesign中的所有选定项目



试图弄清楚如何在Indesign CC中的页面上的所有选定项目中添加落下阴影。这是我所拥有的,但它说"不确定不是对象。"

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;

,那就是这样(尽管我希望检查项目是否具有应用对象样式,如果是这样,请编辑对象样式本身。那么,我会查看项目是否已经处理到已经处理的样式获得性能。但要简短:

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;
}

通过使用"选择全",返回的对象是经典数组,其中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本身内总有替代方案。