IDML:按正确顺序提取文本内容

时间:2013-03-01 09:43:53

标签: adobe-indesign idml

我正在尝试从IDML文件中提取文本内容。

我目前正在做的是 -

  1. 提取xml文件,转到designmap.xml文件并查找构成文档的点差。

  2. Spreads是designmap.xml中的元素,定义为::

  3. 在每个点差中,我会查找<TextFrame>个元素,并从ParentStory属性中获取相应的内容
  4. 问题是这个文本似乎没有按顺序排列。我有一个简单的IDML文件,其中我有一个标题文本框架,一个文本框架覆盖页面的内容。当我提取时,首先获取正文部分ifs,然后是标题。

    有没有什么方法可以按照我们可以看到的相同顺序提取内容?

    感谢。

    PS - 在元素中,NextFrame和PreviousFrame属性都设置为'n'。我不确定这意味着什么,这些价值观能否以某种方式提供帮助。抱歉,如果我在这里遗漏了一些非常基本的东西,我是设计和IDML的新手。

1 个答案:

答案 0 :(得分:3)

IDML TextFrame中的Spread元素的顺序表示其z顺序深度,而不是页面上的任何类型的阅读顺序。在您描述的文档中,要么操纵深度,要么在标题之前将body元素添加到文档中:无论哪种方式都处于较低深度。

以我认为你想要的方式确定阅读顺序的唯一方法是弄清楚页面上元素的位置(大概一旦你知道这可以从上到下和/或从左到右,甚至是从右到左,取决于语言)。这可能有点棘手,但基本上是GeometricBounds&gt;的ItemTransformSpread参数的总和。 Page&gt; PageItem heirarchy。有关详细信息,请参阅我的回答:https://stackoverflow.com/a/12490600/1014822

或者,如果您可以控制文档创作过程,则可以确保作者使用深度来指示阅读顺序,这将为您节省一些编码。但请注意,IDML也有Layer s的概念,这进一步使深度问题复杂化。

当故事从一个帧流向另一个帧时,

NextTextFramePreviousTextFrame仅用于链接帧。值N表示该方向没有链接的框架。