【问题标题】:InDesign javascript to find overlapping textframesInDesign javascript 查找重叠的文本框
【发布时间】:2019-06-03 07:54:06
【问题描述】:

InDesign 中是否有使用 Javascript 搜索文档中重叠的任何文本框架的方法?我一直在查看具有 TextFrame 的所有属性的文档,但找不到任何可以判断是否有任何重叠框的东西。
我不知道 Javascript,但知道 Ruby,所以我了解它。

【问题讨论】:

    标签: javascript adobe-indesign


    【解决方案1】:

    每个页面对象都有一个只读属性textFrames,页面上有所有的textFrames。 每个 textFrame 都有一个方法visibleBounds,它会以[x1,y1,x2,y2] 的形式返回一个数组,这样你就可以得到这个文本框的几何边界。

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 发帖前请务必进行测试:此脚本的第一行包含错误。该属性称为rulerOrigin,而不是ruleOrigin
      • 谢谢。主题是主要代码而不是注释部分。您在否决投票之前尝试过吗?
      • 但是如果没有(至少)这个更正就不能工作。您看不到它,因为它现在已被删除,但有人对此提出投诉。
      猜你喜欢
      • 1970-01-01
      • 2021-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多