#xml #adobe #idml
#xml #adobe #idml
Вопрос:
Я новичок в IDML document, и мне было интересно, как можно найти номер страницы конкретной истории. Spread_XXXX.xml содержит элементы страницы, которые в основном описывают, сколько страниц находится в развороте, и текстовый фрейм, который ссылается на историю. Однако я не смог найти никакой связи между ними.
Комментарии:
1. Я не знаю IDML (я использую InDesign), но беглое изучение спецификации, похоже, указывает на то, что IDML отделяет макет от содержимого. Это означало бы, что страница, на которой что-то появляется, неизвестна до тех пор, пока содержимое не будет отображено в определенном макете.
2. но разве при рендеринге контента не будет использоваться какая-то базовая логика для сопоставления историй с определенным номером страницы и их соответствующего отображения?
3. Да, и вам пришлось бы дублировать эту логику, поскольку результат не сохраняется в файле IDML.
Ответ №1:
Я знаю, что немного опаздываю на вечеринку, но, возможно, ответ будет полезен кому-то еще.
Хотя ход ваших мыслей отчасти верен (текстовый фрейм находится на странице), реальность в InDesign / IDML совершенно иная. Фактическая зависимость выглядит следующим образом (упрощенно):
Document:
|
|-Spread
|
|-Page
|-Page
|-TextFrame
|-TextFrame
|-Rectangle... and so on
Как вы можете видеть, текстовый фрейм — это не дочерний элемент страницы, а разворот. Это относительно системы координат spread.
И это отчасти имеет смысл. Изображение у вас есть макет, подобный этому:
|________Spread___________|
|___Page 1___|___Page 2___|
| |__Text 1__| |
| | | |
| |__________| |
|____________|____________|
Вопрос в том, на какой странице находится Text 1
? На самом деле вы не можете ответить на этот вопрос. Все, что вы могли бы сделать, это выяснить, находится ли угол текстового фрейма в пределах ограничивающей рамки определенной страницы.
Цитирование кулинарной книги IDML:
По умолчанию элементы страницы находятся в координатах распространения. Начало координат находится в центральной точке привязки страницы. Часто проще работать в координатах страницы. Этого можно достичь в IDML, настроив матрицу ItemTransform элемента страницы. Концептуально, это вопрос перемещения начала координат из центральной точки разворота в верхний левый угол страницы следующим образом:
- Определите местоположение привязки страницы на основе нуля, как описано выше.
- Определите индекс страницы на основе нуля.
- Определите ширину страницы.
- Определите высоту страницы.
- Вычислите перевод по x (или по горизонтали) следующим образом: xTranslation = (pageIndex — привязка страницы) * Ширина страницы
- Вычислите перевод по y (или вертикали) следующим образом: yTranslation = высота страницы / 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"/> ...