1

我正在开发一个 InDesign 插件,我想知道是否可以获取我的页面的来源?

我在想这样的事情:

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

预先感谢您的帮助 !

编辑:

我将更准确地解释我的问题:

我必须在这里完成的任务是使用通过 API 调用接收到的坐标来显示形状。

这有一个问题:用户可以在 InDesign 上编辑原点 (x, y)。如果它改变了棋盘的原点,那么这些形状将不再位于它们应该正常放置在页面上的位置。

这里是红色的,形状在正确的位置。

在蓝色中,它们不在正确的位置,因为我修改了电路板的原点。 在此处输入图像描述 所以我需要恢复页面的原点,以便能够计算我的板的原点和我的页面的原点之间的差异。这将使我的形状始终位于正确的位置。

4

2 回答 2

1

文档zeroPoint属性的值是一个由两个数字组成的数组。

  • 索引 0 处的数字是 X 轴上的零点
  • 索引 1 处的数字是 Y 轴上的零点。

例如:

app.activeDocument.zeroPoint;

产生[0,0]一个新创建的文档,即一个零点没有从默认位置改变的文档。


示例用法:

创建新页面项目时,需要计算zeroPoint值以确保将其定位在所需位置。

示例 A:

假设我们要在文档的第一页上添加一个新的方形文本框,该文本框始终位于页面的左上角,而与当前的零点位置无关。

在这种情况下,我们的代码将类似于以下内容:

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和值。zeroPointYgeometricBounds

示例 B:

设置时计算zeroPointgeometricBounds可能会变得乏味,尤其是在创建多个页面项时。它通常更简单、更有效:

  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;

如您所见,在前面的示例中,它产生与"Example A"相同的结果,但是在设置 时我们不进行任何计算geometricBounds,而是根据需要简单地定义我们的值,即geometricBounds: [0, 0, 50, 50]

于 2021-09-28T13:39:07.100 回答
0

rulerOrigin(如果你是这个意思)是整个文档的一个特征。这不是单个页面的功能。

例如,您可以通过rulerOrigin以下方式获取和查看当前文档:

alert(app.activeDocument.viewPreferences.rulerOrigin);

同样的方式你可以改变这个特性:

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

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

于 2021-09-27T15:17:10.947 回答