![](/img/trans.png)
[英]Reliably detecting text overflows in TextFrames in InDesign Server using javascript scripting?
[英]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.