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