InDesign javascript以查找重叠的文本框

InDesign javascript以查找重叠的文本框,javascript,adobe-indesign,Javascript,Adobe Indesign,InDesign中是否使用Javascript搜索文档中重叠的任何文本帧?我一直在浏览一个包含TextFrame所有属性的文档,但找不到任何可能说明是否存在重叠框的内容 我不懂Javascript,但知道Ruby,所以我了解其中的一些内容。每个页面对象都有一个只读属性textFrames,页面上有所有textFrames。 每个文本框都有一个方法visibleBounds,该方法将以[x1,y1,x2,y2]的形式返回一个数组,因此您可以获得此文本框的几何边界 因此,您需要迭代页面的所有文本框,

InDesign中是否使用Javascript搜索文档中重叠的任何文本帧?我一直在浏览一个包含TextFrame所有属性的文档,但找不到任何可能说明是否存在重叠框的内容

我不懂Javascript,但知道Ruby,所以我了解其中的一些内容。

每个页面对象都有一个只读属性
textFrames
,页面上有所有textFrames。 每个文本框都有一个方法
visibleBounds
,该方法将以
[x1,y1,x2,y2]
的形式返回一个数组,因此您可以获得此文本框的几何边界


因此,您需要迭代页面的所有文本框,获得每个文本框的边界,然后必须检查它们是否相互重叠。

下面是一个查找重叠文本框的简单代码。它循环遍历活动文档中的所有排列,并暂停以报告重叠。看看吧

app.activeDocument.viewPreferences.rulerOrigin= RulerOrigin.SPREAD_ORIGIN;
//If you are going to work with pages, not spreads, change the line above to PAGE_ORIGIN;
for (a = 0; a < app.activeDocument.spreads.length; a ++) {
    var pg = app.activeDocument.spreads [a];
    for (b = 0 ; b < pg.textFrames.length; b ++) {
        var r1 = pg.textFrames [b];
        for (c = 0 ; c < pg.textFrames.length; c ++) {
            var r2 = pg.textFrames [c];
            var gb1 = r1.geometricBounds;
            var gb2 = r2.geometricBounds;

            if ((r1 != r2) &&
                (gb1 [0] > gb2 [0] && gb1 [0] < gb2 [2] && gb1 [1] > gb2 [1] && gb1 [1] < gb2 [3]) ||
                (gb1 [2] > gb2 [0] && gb1 [2] < gb2 [2] && gb1 [1] > gb2 [1] && gb1 [1] < gb2 [3]) ||
                (gb1 [0] > gb2 [0] && gb1 [0] < gb2 [2] && gb1 [3] > gb2 [1] && gb1 [3] < gb2 [3]) ||
                (gb1 [2] > gb2 [0] && gb1 [2] < gb2 [2] && gb1 [3] > gb2 [1] && gb1 [3] < gb2 [3])) {
                r1.select ();
                var cnf = confirm ("Text frames overlap. Continue searching?", true, "Overlapping text frames");
                if (!cnf)
                    exit ();
            }
        }
    }
}
app.activeDocument.viewPreferences.rulerOrigin=rulerOrigin.SPREAD\u来源;
//如果要处理页面,而不是排列,请将上面的行更改为PAGE_ORIGIN;
对于(a=0;agb2[0]&gb1[0]gb2[1]&gb1[1]gb2[0]&gb1[2]gb2[1]&gb1[1]gb2[0]&&gb1[0]gb2[1]&&gb1[3]gb2[0]&gb1[2]gb2[1]&gb1[3]
请确保在发布前进行测试:此脚本的第一行包含错误。属性被调用,而不是
ruleOrigin
。谢谢。主题是主代码,而不是注释部分。你在否决投票前试过吗?但没有(至少)这个修正就不行了。您无法看到它,因为它现在已被删除,但有人对此表示不满。