簡體   English   中英

InDesign Javascript查找重疊的文本框架

[英]InDesign javascript to find overlapping textframes

無論如何,InDesign中是否使用Javascript搜索文檔中重疊的任何文本框? 我一直在瀏覽具有TextFrame所有屬性的文檔,找不到任何可以告訴您是否存在重疊框的信息。
我不了解Javascript,但確實了解Ruby,因此我了解其中的一些知識。

每個Page對象在頁面上都有一個只讀屬性textFrames和alle textFrames。 每個textFrame都有一個方法visibleBounds ,該方法visibleBounds [x1,y1,x2,y2]的形式返回一個數組,因此您可以獲取此文本框的幾何邊界。

因此,您需要遍歷頁面的所有textFrame,獲取每個textFrame的邊界,然后必須檢查它們是否彼此重疊。

這是一個簡單的代碼,用於查找重疊的文本框架。 它在活動文檔中循環遍歷所有跨頁,並暫停以報告重疊。 看看這個。

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 ();
            }
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM