【问题标题】:IDML : Extract text content in proper orderIDML:以正确的顺序提取文本内容
【发布时间】:2013-03-01 09:43:53
【问题描述】:

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

我目前正在做的是 -

  1. 提取 xml 文件,转到 designmap.xml 文件并查找构成该文档的跨页。

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

  3. 在每个展开中,我查找<TextFrame> 元素,并从ParentStory 属性中获取相应的内容

问题在于这段文字似乎不按顺序排列。我有一个简单的 IDML 文件,其中有一个标题文本框,一个文本框覆盖页面内容。当我提取时,首先提取正文部分,然后提取标题。

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

谢谢。

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

【问题讨论】:

    标签: adobe-indesign idml


    【解决方案1】:

    IDML SpreadTextFrame 元素的顺序表示它们的 z 顺序深度,而不是页面上的任何阅读顺序。在您描述的文档中,深度被操纵,或者正文元素在标题之前添加到文档中:无论哪种方式它都处于较低的深度。

    以我认为您想要的方式确定阅读顺序的唯一方法是找出页面上元素的位置(大概一旦您知道这一点,您就可以从上到下和/或从左到右,甚至根据语言从右到左)。这可能有点棘手,但基本上是Spread > Page > PageItem 层次结构的GeometricBoundsItemTransform 参数的总和。请在此处查看我的答案以获取更多详细信息:https://stackoverflow.com/a/12490600/1014822

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

    NextTextFramePreviousTextFrame 仅用于链接帧,当故事从一个帧流向另一个帧时。 N 的值表示该方向上没有链接框架。

    【讨论】:

    • 我正在从 IDML 文件中提取文本,就像您提到的那样。如果您对此有任何想法,请帮助我 - 我可以安全地假设文档中的点差按照与设计图文件中提到的顺序相同的顺序排列。
    • 如果您将这类事情作为一个单独的问题提出,那么 SO 的 IDML 部分将得到改进 - 但是,是的,点差的顺序取决于它们在设计图中出现的顺序。
    猜你喜欢
    • 1970-01-01
    • 2020-01-05
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 2022-10-15
    • 2018-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多