0

我正在尝试将标签应用于文档中的所有 EPS 文件。我的代码:

 #target indesign
var allItems=app.activeDocument.pageItems.everyItem().getElements().slice(0);
for(var i=0;i<allItems.length;i++)
    { 
        var allInnerItems = allItems[i].allPageItems;
        for(var j=0;j<allInnerItems.length;i++)
        {
            (allInnerItems[j].toString() == "[object EPS]") ? 
                allInnerItems[j].parent.autoTag() : alert('false');
        }
    }

该代码查找所有 EPS 并应用于它们的 Rectangle 对象 AutoTag 方法。但我收到错误消息:“对象或父故事已标记或无法标记”。此外,如果我用 EPS 选择一些矩形对象并单击用户界面中的“AutoTag”功能,它将起作用。也许有人知道,我该怎么办?

提前致谢!

4

1 回答 1

0

我认为这应该适用于您正在尝试做的事情。

在内部循环中,您忘记更改i++j++.

此外,您不必获取对象的字符串值来对其进行测试(即。.toString() == "[object EPS]"),您可以只要求它的constructor.

最后,如果您不希望已经标记的元素出现任何错误,您可以在语句中添加一个条件,在尝试之前if测试是否pageItem有一个。associatedXMLElementautoTag()

var allItems = app.activeDocument.pageItems.everyItem().getElements();
for(var i=0; i<allItems.length; i++)
{ 
   var allInnerItems = allItems[i].allPageItems;
   for(var j=0;j<allInnerItems.length; j++)
   {
      var item = allInnerItems[j];
      if (item.constructor == EPS && !item.parent.associatedXMLElement) {
         item.parent.autoTag()
      } else {
         alert('false');
      }
   }
}
于 2012-11-12T15:05:16.967 回答