Сценарий inDesign: получение текста и номера страницы текста с использованием определенного стиля абзаца с использованием JavaScript

У меня есть документ InDesign с 10 страницами, заполненными текстом. Текст оформлен с использованием различных стилей абзаца, некоторые из которых имеют отношение к созданию пользовательского оглавления.

Существует два соответствующих стиля абзаца: "Заголовок1" и "Заголовок2", из которых я пытаюсь создать свое собственное оглавление, которое я хочу экспортировать в текстовый файл.

Соответствующая информация, которую мне нужно получить, - это текст с заголовками "Header1" и "Header2" и соответствующий номер страницы.

Я пытался добиться этого через GREP и был наполовину успешен, но GREP сканирует весь документ, а не страницу за страницей.

Есть ли способ просмотреть все стилизованные тексты по стилю абзаца постранично?

Заранее спасибо!

2 ответа

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

В приведенном ниже примере кода я собрал абзацы в para_with_style переменная:

var doc = app.activeDocument;

var story = doc.stories[0];

// Get every paragraph in `story` (using `everyItem().getElements()` is more efficient)
var paras = story.paragraphs.everyItem().getElements();

// Collect every paragraph with a certain paragraph style
var applied_style = doc.paragraphStyles.itemByName('style-name');
var paras_with_style = [];
for (var i=0,l=paras.length; i<l; i++) {
   var para = paras[i];
   if (para.appliedParagraphStyle == applied_style) {
      paras_with_style.push(para);
   }
}

// Do something with each `para` in `paras_with_style`

Да.

Посмотрите на объектную модель API InDesign.

У вас есть класс Pages, так что итерации по всем страницам, используя длину метода

Затем, внутри этого цикла, для каждой страницы получить все TextFrames

Для каждого textFrame используйте абзац класса для итерации по каждому TextFrame

Внутри каждого абзаца получите нужные атрибуты.

Прочитайте эту документацию, чтобы получить хорошее начало

Другие вопросы по тегам