在InDesign javascript中查找重叠的文本框架

时间:2015-10-20 08:20:23

标签: javascript adobe-indesign

无论如何在InDesign中使用Javascript来搜索重叠的文档中的任何文本框架?我一直在浏览一个包含TextFrame所有属性的文档,但找不到任何可能有任何重叠框的信息。
我不懂Javascript但知道Ruby,所以我理解它的一些内容。

2 个答案:

答案 0 :(得分:2)

每个Page对象都有一个只读属性$scope.do_not_show_these_cities = ['Stockholm', 'Gothenburg']; $scope.getFilter = function (element) { return $scope.do_not_show_these_cities.indexOf(element.name) < 0; } ,页面上有alle textFrames。 每个textFrame都有一个方法textFrames,它将以visibleBounds的形式返回一个数组,因此您可以获得此文本框架的几何边界。

因此,您需要迭代页面的所有textFrame,获取每个textFrame的边界,然后您必须检查它们中是否有任何相互重叠。

答案 1 :(得分:0)

这是一个查找重叠文本框架的简单代码。它遍历活动文档中的所有点差并暂停以报告重叠。看看吧。

app.activeDocument.viewPreferences.ruleOrigin = RuleOrigin.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 ();
            }
        }
    }
}