Есть ли способ узнать, в каком номере страницы находится текстовый фрейм? - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь выяснить, существует ли конкретный текст и идеально ли он вписывается в текстовый фрейм, и когда текст перетекает в следующий текстовый фрейм, то после вычисления координат (базовой линии) следующего фрейма увеличивается размер существующий фрейм и пытается вписать текст, но когда текстовый фрейм находится на следующей странице, тогда базовая линия дает мне отрицательное значение, поэтому я хотел бы знать, есть ли способ понять, что следующий текстовый фрейм находится на следующей странице чтобы избежать отрицательного значения при расчете.

1 Ответ

1 голос
/ 02 марта 2020

Есть ли способ узнать, в каком номере страницы находится текстовый фрейм?

  1. Да, каждый класс TextFrame имеет parentPage свойство, которое возвращает ссылку на Page, в котором находится текстовый фрейм.

  2. Каждый класс Page имеет свойство name, которое по сути, возвращает строку с номером страницы

Поэтому следующий фрагмент кода регистрирует на консоли номер страницы, на котором находится первый текстовый фрейм документов.

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

$.writeln(firstTextFramesPageNumber)

Я хотел бы знать, есть ли способ понять, что следующий текстовый фрейм находится на следующей странице, чтобы избежать отрицательного значения при расчете.

Для этого вам понадобится to:

  1. Проверьте, имеет ли текстовый фрейм связанный следующий текстовый фрейм. Вы можете достичь этого, используя свойство nextTextFrame класса TextFrame. Будет либо:

    • Возвращать null, если нет следующего текстового фрейма.
    • Или ссылка на следующий текстовый фрейм, когда есть связанный следующий текстовый фрейм.
  2. Как только вы узнаете, что есть связанный следующий текстовый фрейм, вы можете проверить parentPage.name для следующего текстового фрейма, на который есть ссылка, чтобы получить номер его страницы.

  3. Чтобы проверить, находится ли текстовый фрейм и связанный с ним следующий текстовый фрейм на той же странице, используйте оператор равенства ===.


Demo Gist

Ниже приведен несколько надуманный пример суть. Он просматривает все текстовые фреймы в документе и регистрирует на консоли следующее:

  • Номер страницы, на которой находится текущий текстовый фрейм.
  • Имеет ли текущий текстовый фрейм связанный следующий текстовый фрейм.
  • Когда текущий текст имеет связанный следующий текстовый фрейм, он сообщает вам, на каком номере страницы он находится.
#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('--------------')
}
...