[ID CC-CC2022] Нумерация текстовых фреймов

ryzl

Участник
Топикстартер
Сообщения
23
Реакции
3
Приветствую!
Возникла необходимость вставить во все текстовые фреймы документа текст вида "Номер страницы-номер фрейма".
Написал скрипт:

#target indesign
var doc = app.activeDocument;
for (var j = 0; j < doc.textFrames.length; j++)
{
var currentTextFrame = doc.textFrames[j];
var currspread = doc.textFrames[j].parent
var currentPage = currentTextFrame.parentPage.name;
var txt = currentPage + "--" + j
doc.textFrames[j].contents = txt
}

Отрабатывает неплохо.
НО. Хотелось бы чтобы совсем хорошо! :)

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

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

Помогите пожалуйста!!
 
З
Приветствую!
Возникла необходимость вставить во все текстовые фреймы документа текст вида "Номер страницы-номер фрейма".
Написал скрипт:

#target indesign
var doc = app.activeDocument;
for (var j = 0; j < doc.textFrames.length; j++)
{
var currentTextFrame = doc.textFrames[j];
var currspread = doc.textFrames[j].parent
var currentPage = currentTextFrame.parentPage.name;
var txt = currentPage + "--" + j
doc.textFrames[j].contents = txt
}

Отрабатывает неплохо.
НО. Хотелось бы чтобы совсем хорошо! :)

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

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

Помогите пожалуйста!!
За вознаграждение. Если результат будет приватный))
 
chat GPT вам в помощь)
JavaScript:
var doc = app.activeDocument;

for (var i = 0; i < doc.pages.length; i++) {
  var page = doc.pages[i];
  var textFrames = page.textFrames;

  // Создаем массив для хранения фреймов и их вертикальных позиций
  var framesWithPositions = [];

  for (var j = 0; j < textFrames.length; j++) {
    var frame = textFrames[j];
    var position = frame.geometricBounds[0];

    // Добавляем фрейм и его вертикальную позицию в массив
    framesWithPositions.push({ frame: frame, position: position });
  }

  // Сортируем массив фреймов по вертикальной позиции
  framesWithPositions.sort(function(a, b) {
    return a.position - b.position;
  });

  // Нумеруем фреймы по порядку от верхнего к нижнему
  for (var k = 0; k < framesWithPositions.length; k++) {
    var frameWithPosition = framesWithPositions[k];
    frameWithPosition.frame.contents = (k + 1).toString();
  }
}
 
  • Спасибо
Реакции: RIKITIKI и ryzl
chat GPT вам в помощь)
JavaScript:
var doc = app.activeDocument;

for (var i = 0; i < doc.pages.length; i++) {
  var page = doc.pages[i];
  var textFrames = page.textFrames;

  // Создаем массив для хранения фреймов и их вертикальных позиций
  var framesWithPositions = [];

  for (var j = 0; j < textFrames.length; j++) {
    var frame = textFrames[j];
    var position = frame.geometricBounds[0];

    // Добавляем фрейм и его вертикальную позицию в массив
    framesWithPositions.push({ frame: frame, position: position });
  }

  // Сортируем массив фреймов по вертикальной позиции
  framesWithPositions.sort(function(a, b) {
    return a.position - b.position;
  });

  // Нумеруем фреймы по порядку от верхнего к нижнему
  for (var k = 0; k < framesWithPositions.length; k++) {
    var frameWithPosition = framesWithPositions[k];
    frameWithPosition.frame.contents = (k + 1).toString();
  }
}
Алексей, Спасибо!!
То что нужно!.
Работает как и планирова
 
  • Спасибо
Реакции: densen и ryzl
Скрипт очень полезен для подготовки на перевод нечитаемых (плохо распознаваемых) оригиналов для перевода с листа.
Например (рис 1). Размечаем текст, запускаем срипт и нумеруем все фреймы.
Выдаем на перевод IDMl и пдф файл (для переводчика).
Переводчик вместо цифр вставляет текст. И после перевода открываем IDML и имеем файл с текстом который нужен.
(особенно хорошо работает с китайскими документами, распозновать которые сплошная морока, особенно если иероглифы немного сжаты, на таких текстах Finereader просто полностью лажает)
 

Вложения

  • Untitled-1.png
    Untitled-1.png
    398.2 КБ · Просм.: 124