0

我是 IDML 文档的新手,想知道如何找到特定故事的页码。Spread_XXXX.xml 具有 Page 元素,它基本上描述了展开中的页面数和引用故事的 TextFrame。但是,我找不到它们之间的任何联系。

4

1 回答 1

0

我知道我参加聚会有点晚了,但也许答案对其他人有帮助。

虽然您的思路是正确的(文本框架在页面上),但在 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 矩阵来实现。从概念上讲,这是将原点从扩展中心点移动到页面左上角的问题,如下所示:

  1. 如上所述,确定从零开始的页面绑定位置。
  2. 确定从零开始的页面索引。
  3. 确定页面宽度。
  4. 确定页面高度。
  5. 按如下方式计算 x(或水平)平移:xTranslation = (pageIndex - pageBinding) * pageWidth
  6. 按如下方式计算 y(或垂直)平移:yTranslation = pageHeight / 2
  7. 添加 yTranslation。

例如,以下 TextFrame 位于绑定左侧的页面上;因此,它水平变换为-612 点,垂直变换为-396 点。这会将原点从绑定中心向左移动 612 点,向上移动 396 点。

<TextFrame ... ItemTransform="1 0 0 1 -612 -396">
...
<PathPointArray>
<PathPointType Anchor="36 36" LeftDirection="36 36"
RightDirection="36 36"/>
...
于 2021-07-28T08:12:08.063 回答