0

与我之前基于其几何边界或部分名称在页面上查找 textFrame 的问题类似,我现在遇到了在组内查找 textFrame 的问题。如果我使用所有 textFrames 的数组,例如:

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

不会找到组内的任何文本框。如果 textFrame 在组内,我如何弄清楚如何引用它?即使必须取消分组,也没关系,但我什至无法弄清楚如何在页面上找到组!

4

3 回答 3

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);
于 2013-07-17T08:52:39.857 回答
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");
于 2013-07-17T05:57:59.990 回答
1

您的任务是获取图层或文档中的所有文本框。这些文本框架是否在一个组中。这是通过 的属性完成的allPageItems。例如使用这个: -

var items=app.activeDocument.allPageItems;

这将为您提供项目中和组内的所有文本框架。现在您可以进行任何操作。您可以items在调试控制台上检查,它将提供所有类型的对象。然后您可以检查文本框

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

现在您可以将每个对象存储在类型数组中。

于 2018-01-31T08:27:49.207 回答