类似于我之前在页面上基于geometryBounds或部分名称查找textFrame的问题,我现在遇到了查找textFrames的问题,如果它们在组内。如果我使用所有textFrames的数组,例如:
var textFramesArray = document.textFrames.everyItem().getElements();
它将不找到组内的任何textFrame。如果它在一个组中,我怎样才能弄清楚如何引用textFrame?即使该组必须取消分组,这很好,但我甚至无法弄清楚如何在页面上找到组!
答案 0 :(得分:7)
页面上的群组是page.groups
...但您无论如何都不需要这样。 Fabian的答案很好,但它不考虑群组,也不考虑剪辑蒙版,也不考虑表格和脚注(等等)中的文本框架。
以下是另一种方法:allPageItems
几乎可以保证返回所有页面项目,各种类型和说服力,组内或其他框架或诸如此类的东西。您可以依次检查,然后处理它们,或构建一系列文本框架以便在闲暇时使用:
allframes = app.activeDocument.allPageItems;
textframes = [];
for (i=0; i<allframes.length; i++)
{
if (allframes[i] instanceof TextFrame)
textframes.push(allframes[i]);
}
alert (textframes.length);
答案 1 :(得分: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");
答案 2 :(得分:1)
您的任务是获取图层或文档中的所有文本框架。这些文本框是否在一个组中。这是通过allPageItems
的属性完成的。例如,使用它: -
var items=app.activeDocument.allPageItems;
这将为您提供项目和组内的所有文本框架。现在你可以进行任何操作。您可以检查调试控制台上的items
,它将提供所有类型的对象。然后您可以检查文本框架
items[i].constructor.name =='TextFrame'
现在您可以将每个对象存储在类型数组中。