Как найти номер страницы истории в документе IDML?
Я новичок в документе IDML, и мне было интересно, как найти номер страницы определенной истории. Spread_XXXX.xml имеет элементы Page, которые в основном описывают количество страниц в распространении, и TextFrame, который ссылается на историю. Однако я не смог найти никакой связи между ними.
1 ответ
Я знаю, что опаздываю на вечеринку, но, возможно, ответ будет полезен кому-то другому.
Хотя ход ваших мыслей отчасти верен (текстовый фрейм находится на странице), в InDesign / IDML реальность совершенно иная. Фактическая зависимость выглядит следующим образом (упрощенно):
Document:
|
|-Spread
|
|-Page
|-Page
|-TextFrame
|-TextFrame
|-Rectangle... and so on
Как видите, текстовый фрейм - это не дочерний элемент страницы, а разворот. Это относительно системы координат спреда.
И в этом есть смысл. Изображение у вас есть такой макет:
|________Spread___________|
|___Page 1___|___Page 2___|
| |__Text 1__| |
| | | |
| |__________| |
|____________|____________|
Вопрос: на какой странице
Text 1
? Вы не можете ответить на этот вопрос. Все, что вы могли сделать, - это выяснить, находится ли угол текстового фрейма в пределах ограничительной рамки определенной страницы.
Цитата из кулинарной книги IDML:
По умолчанию элементы страницы находятся в координатах разворота. Начало координат находится в центральной точке привязки страницы. Часто проще работать с координатами страницы. Это может быть достигнуто в IDML путем настройки матрицы ItemTransform элемента страницы. По сути, это вопрос перемещения начала координат из центральной точки разворота в верхний левый угол страницы, как показано ниже:
- Определите отсчитываемое от нуля расположение привязки страницы, как описано выше.
- Определите индекс страницы с отсчетом от нуля.
- Определите ширину страницы.
- Определите высоту страницы.
- Рассчитайте перевод по оси x (или по горизонтали) следующим образом: xTranslation = (pageIndex - pageBinding) * pageWidth
- Вычислите сдвиг по оси y (или по вертикали) следующим образом: yTranslation = pageHeight / 2
- Добавьте yTranslation.
Например, следующий текстовый фрейм находится на странице слева от привязки; следовательно, он преобразуется по горизонтали -612 точек и по вертикали -396 точек. Это перемещает начало координат из центра привязки влево на 612 пунктов и вверх на 396 пунктов.
<TextFrame ... ItemTransform="1 0 0 1 -612 -396"> ... <PathPointArray> <PathPointType Anchor="36 36" LeftDirection="36 36" RightDirection="36 36"/> ...