2013-07-16 29 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' 

,現在你可以在存儲陣列類型的每個對象。