如何在IDML文档中查找故事的页码?

时间:2016-10-25 04:44:52

标签: xml adobe idml

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

1 个答案:

答案 0 :(得分:0)

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

虽然您的思路有点正确(页面上有一个文本框),但 InDesign/IDML 中的现实却完全不同。实际的依赖如下(简化):

Document:
|
|-Spread
  |
  |-Page
  |-Page
  |-TextFrame
  |-TextFrame
  |-Rectangle... and so on

如您所见,文本框架不是页面的子级,而是跨页。它是相对于传播的坐标系。

这有点道理。图片你有这样的布局:

|________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"/>
...