【问题标题】:How to find page number of an story in IDML Document?如何在 IDML 文档中查找故事的页码?
【发布时间】:2016-10-25 04:44:52
【问题描述】:

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

【问题讨论】:

  • 我不知道 IDML(我使用 InDesign),但粗略检查一下规范似乎表明 IDML 将布局与内容分开。这意味着在定义的布局中呈现内容之前,不知道出现某些内容的页面。
  • 但是内容渲染不会使用一些底层逻辑将故事映射到特定的页码并相应地渲染它们吗?
  • 是的,您必须复制该逻辑,因为结果未存储在 IDML 文件中。

标签: xml adobe idml


【解决方案1】:

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

虽然您的思路有点正确(文本框架在页面上),但 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"/>
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 2020-05-12
    • 1970-01-01
    • 2015-05-23
    相关资源
    最近更新 更多