0

我试图找出特定文本是否存在并完全适合文本框架以及文本何时流向下一个文本框架,然后在计算下一帧的坐标(基线)时,我会增加现有框架的大小和试图适应文本,但是当文本框架在下一页时,基线给我一个负值,所以我想知道是否有任何方法可以理解下一个文本框架在下一页以便计算时避免负值。

4

1 回答 1

1

有没有办法判断文本框存在于哪个页码?

  1. 是的,每个TextFrame类都有一个parentPage属性,该属性返回Page对文本框架所在的 的引用。

  2. 每个Page类都有一个name属性,该属性本质上返回一个页码字符串

因此,以下代码片段将文档第一个文本框所在的页码记录到控制台。

var doc = app.activeDocument;
var firstTextFramesPageNumber = doc.textFrames[0].parentPage.name;

$.writeln(firstTextFramesPageNumber)

我想知道是否有任何方法可以理解下一个文本框在下一页中,以避免在计算时出现负值。

为此,您需要:

  1. 确定文本框是否有关联的下一个文本框。您可以通过利用类的nextTextFrame属性来实现这一点TextFrame。它将:

    • null如果没有关联的下一个文本框,则返回。
    • 或者,当存在关联的下一个文本框架时,对下一个文本框架的引用。
  2. 一旦您知道有关联的下一个文本框架,您可以检查parentPage.name引用的下一个文本框架以获取其页码。

  3. 要检查文本框架及其关联的下一个文本框架是否在同一页面上,请使用===相等运算符进行检查。


演示要点

下面是一个有点做作的示例要点。它循环遍历文档中的所有文本框架并将以下内容记录到控制台:

  • 当前文本框所在的页码。
  • 当前文本框是否有关联的下一个文本框。
  • 当当前文本确实有关联的下一个文本框架时,它会告诉您它在哪个页码上。
#target indesign

var doc = app.activeDocument;

var textFrames = doc.textFrames;

for (var i = 0, max = textFrames.length; i < max; i++) {
   var currentTextFrame = textFrames[i];

   // 1. Get the current text frames page number
   var currentTextFramePageNumber = currentTextFrame.parentPage.name

   $.writeln('The current text frame is on page ' + currentTextFramePageNumber)

   // 2. Get the current text frames associated next text frame.
   var hasNextTextFrame = currentTextFrame.nextTextFrame;


   if (hasNextTextFrame) {     
     // 3. Let's get the page number of the associated next text frame?
     var nextTextFramePageNumber = currentTextFrame.nextTextFrame.parentPage.name

     // 4. Is the associated next text frame on the same page number as the current text frame?
     if (currentTextFramePageNumber === nextTextFramePageNumber) {
      $.writeln('This text frame DOES have a next text frame. It\'s also on on page '
          + nextTextFramePageNumber)
     } else {
      $.writeln('This text frame DOES have a next text frame. However it\'s on a different page, it\'s on page '
          + nextTextFramePageNumber) 
     }

   } else {
     $.writeln('This text frame DOES NOT have a next text frame.')
   }

   $.writeln('--------------')
}
于 2020-03-02T12:27:41.083 回答