(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
Значения при установке могут быть утомительными, особенно при создании нескольких элементов страницы. Часто проще и эффективнее:
- Получить текущие нулевые баллы
[x,y]
. - Установите нулевые точки x и y на ноль.
- Затем создайте / добавьте новый элемент (ы) страницы.
- Наконец, верните нулевые точки в исходное положение.
Следующая суть демонстрирует вышеупомянутый подход:
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;