Есть ли способ узнать, в каком номере страницы находится текстовый фрейм?
Да, каждый класс TextFrame
имеет parentPage
свойство, которое возвращает ссылку на Page
, в котором находится текстовый фрейм.
Каждый класс Page
имеет свойство name
, которое по сути, возвращает строку с номером страницы
Поэтому следующий фрагмент кода регистрирует на консоли номер страницы, на котором находится первый текстовый фрейм документов.
var doc = app.activeDocument;
var firstTextFramesPageNumber = doc.textFrames[0].parentPage.name;
$.writeln(firstTextFramesPageNumber)
Я хотел бы знать, есть ли способ понять, что следующий текстовый фрейм находится на следующей странице, чтобы избежать отрицательного значения при расчете.
Для этого вам понадобится to:
Проверьте, имеет ли текстовый фрейм связанный следующий текстовый фрейм. Вы можете достичь этого, используя свойство nextTextFrame
класса TextFrame
. Будет либо:
- Возвращать
null
, если нет следующего текстового фрейма. - Или ссылка на следующий текстовый фрейм, когда есть связанный следующий текстовый фрейм.
Как только вы узнаете, что есть связанный следующий текстовый фрейм, вы можете проверить parentPage.name
для следующего текстового фрейма, на который есть ссылка, чтобы получить номер его страницы.
Чтобы проверить, находится ли текстовый фрейм и связанный с ним следующий текстовый фрейм на той же странице, используйте оператор равенства ===
.
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('--------------')
}