在InDesign中根据geometryBounds查找textFrame

时间:2013-06-04 15:57:20

标签: javascript numbers adobe-indesign extendscript

我的下一个问题是通过在页面上引用其位置来识别InDesign CS6中的特定textFrame。我知道我可以使用textFrame.geometricBounds来获得它的位置,但是我无法使if语句起作用,即使它应该。

var textFramesArray = document.layers.item("Product Name").textFrames.everyItem().getElements();

for (var i = 0; i < textFramesArray.length; i++) {
    var corners = textFramesArray[i].geometricBounds;
    $.writeln(textFramesArray[i].geometricBounds);
    if (4.0 < corners[0] < 5.0 && -2.0 < corners[1] < -1.0) {
        $.writeln("Found textFrame " + textFramesArray[i]);
        $.writeln("Its contents are " + textFramesArray[i].contents);
        var productFrame = textFramesArray[i];
    }
}

第一个$.writelin语句返回三组数组,其中第三组绝对属于if语句中指定的范围。我有一种潜在的怀疑,它与数字的格式有关(整数与真实与双重等),但我不知道具体细节。

1 个答案:

答案 0 :(得分:1)

通过更多探索再次回答了我自己的问题。我发现if语句无法理解双向测试,例如0 < x < 1。因此,我不得不把它分成四个测试,如下:

var textFramesArray = document.layers.item("Product Name").textFrames.everyItem().getElements();
var corners;       
for (var i = 0; i < textFramesArray.length; i++) {
    corners = textFramesArray[i].geometricBounds;
    if (7 < corners[0] && corners[0] < 8 && 0 < corners[1] && corners[1] < 1) {
        var productFrame = textFramesArray[i];
    }
}

这最终有效,所以如果其他人不知道这个限制,现在你知道如何绕过它。