2013-07-16 27 views
0

类似我以前的问题,寻找基于其geometricBounds或通过其名称的一部分在页面上textFrame,我现在遇到了寻找textFrames的问题,如果他们是内群体。如果我使用所有textFrames的数组,如:在InDesign CS6一组内选择textFrames

var textFramesArray = document.textFrames.everyItem().getElements(); 

发现,是一组内的任何textFrames。任何人都可以请帮我弄清楚如何引用一个textFrame,如果它在一个组内?即使该组必须是未分组的,这很好,但我甚至无法弄清楚如何在页面上找到组!请帮忙。

回答

6

组是page.groups ...但你不需要这个反正。 Fabian的回答很好,但它并不考虑团体中的团体,也没有剪裁蒙版,也没有表格和脚注内的文字框(等等)。

下面是一种替代方法:allPageItems几乎保证返回所有页面项目,所有类型和说服,内部组或其他框架或whatnot。您可以检查,那么过程中,他们每个人轮流,或建立文本框架的阵列闲时一起工作:

allframes = app.activeDocument.allPageItems; 
textframes = []; 
for (i=0; i<allframes.length; i++) 
{ 
    if (allframes[i] instanceof TextFrame) 
     textframes.push(allframes[i]); 
} 
alert (textframes.length); 
+0

这似乎是一个更好的办法,因为它会团体和其他textframes内得到textframes递归为好。 –

2

试试这个:在页面上

// this script needs: 
// - a document with one page 
// - some groups with textframes in it on the first page 

var pg = app.activeDocument.pages[0]; 
var groups = pg.groups; 

var tf_ingroup_counter = 0; 
for(var g = 0; g < groups.length;g++){ 
    var grp = groups[g]; 

     for(var t = 0; t < grp.textFrames.length;t++){ 
      var tf = grp.textFrames[t]; 
       if(tf instanceof TextFrame){ 
        tf_ingroup_counter++; 
        }    
     } 
    } 

alert("I found on page " + pg.name +"\n" + pg.textFrames.length 
      +" textframes\nOh and there are also " 
      +tf_ingroup_counter+ " hidden in groups"); 
1

你的任务来获得在层或文档中的所有文本框。无论这些文本框架是否在一个组中。这是通过allPageItems的财产完成的。例如使用这个: -

var items=app.activeDocument.allPageItems; 

这将给你所有的文本框架在项目和组内。现在你可以做任何人工操作。您可以在调试控制台,这将给所有类型的objects.And对检查items,那么你可以检查textframe

items[i].constructor.name =='TextFrame' 

,现在你可以在存储阵列类型的每个对象。