(JavaScript/CEP) Можно ли получить источник моей страницы в InDesign?

Я работаю над плагином InDesign и хотел бы знать, можно ли узнать происхождение моей страницы?

Я думал примерно так:

      var origin = app.activeDocument.pages[0].getOrigin();

Заранее спасибо за вашу помощь !

2 ответа

Решение

Значение свойства документа - это массив из двух чисел.

  • Число в индексе 0 - это нулевая точка на оси X
  • Число в индексе 1 - это нулевая точка на оси Y.

Например:

      app.activeDocument.zeroPoint;

дает [0,0] для вновь созданного документа, т.е. для документа, нулевая точка которого не была изменена по сравнению с положением по умолчанию.


Пример использования:

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

Пример А:

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

В этом случае наш код будет похож на следующий:

      var doc = app.activeDocument;

// 1. Obtain the zero point on the x axis.
var zeroPointX = doc.zeroPoint[0];

// 2. Obtain the zero point on the y axis.
var zeroPointY = doc.zeroPoint[1];

// 3. Create a new text frame that is always positioned at the top left corner
//    of the first page, regardless of the zero point position.
doc.pages.item(0).textFrames.add({
  geometricBounds: [
    0 - zeroPointY,
    0 - zeroPointX,
    50 - zeroPointY,
    50 - zeroPointX
  ],
  contents: "Lorem ipsum dolore"
});

Как видите, в предыдущем примере мы вычитали zeroPointX а также zeroPointY значения из желаемых значений соответственно при их определении для нового текстового фрейма.

Пример Б:

Расчет zeroPointЗначения при установке могут быть утомительными, особенно при создании нескольких элементов страницы. Часто проще и эффективнее:

  1. Получить текущие нулевые баллы [x,y].
  2. Установите нулевые точки x и y на ноль.
  3. Затем создайте / добавьте новый элемент (ы) страницы.
  4. Наконец, верните нулевые точки в исходное положение.

Следующая суть демонстрирует вышеупомянутый подход:

      var doc = app.activeDocument;

// 1. Obtain the original zero point.
var originalZeroPoints = doc.zeroPoint;

// 2. Set x and y zero points both to zero.
doc.zeroPoint = [0,0];

// 3. Create a new text frame that is always positioned at the top left corner
//    of the first page, regardless of the zero point position.
doc.pages.item(0).textFrames.add({
  geometricBounds: [0, 0, 50, 50],
  contents: "Lorem ipsum dolore"
});

// 4. Revert the zero point to original position.
doc.zeroPoint = originalZeroPoints;

Как вы можете видеть, в этом предыдущем примере он дает тот же результат, что и «Пример A» , однако мы не выполняем никаких вычислений при установке geometricBounds, вместо этого мы просто определяем наши значения по желанию, т. е. geometricBounds: [0, 0, 50, 50]

(если вы имели в виду это) - это особенность документа в целом. Это не особенность отдельной страницы.

Например, вы можете получить и увидеть rulerOrigin текущего документа таким образом:

      alert(app.activeDocument.viewPreferences.rulerOrigin);

И таким же образом вы можете изменить эту функцию:

      app.activeDocument.viewPreferences.rulerOrigin = RulerOrigin.SPREAD_ORIGIN;

https://documentation.help/InDesign-CS5/pe_RulerOrigin.html

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