我正在尝试从IDML文件中提取文本内容。
我现在做的是-
designmap.xml文件并查找组成文档的传播范围。<TextFrame>元素,并从ParentStory属性获取相应的内容。问题是,这一案文似乎不太妥当。我有一个简单的IDML文件,其中我有一个标题的文本框架,一个文本框架覆盖页面的内容。当我提取时,身体部分如果先取,然后取头。
有什么方法可以按照我们看到的顺序提取内容吗?
谢谢。
PS -在元素中,NextFrame和PreviousFrame属性都被设置为'n‘。我不知道这意味着什么,这些价值观能有帮助吗?抱歉,如果我错过了一些非常基本的东西,我是设计和IDML的新手。
发布于 2013-03-01 18:23:28
TextFrame元素在IDML Spread中的顺序表示它们的z级深度,而不是页面上的任何类型的读取顺序。在您描述的文档中,要么深度被操纵,要么body元素被添加到文档的标题之前:不管是哪种方式,它都在较低的深度。
以我认为您想要的方式确定阅读顺序的唯一方法是确定页面上元素的位置(可能一旦您知道了这一点,就可以根据语言从上到下和/或左到右,甚至从右到左工作)。这可能有点棘手,但基本上是GeometricBounds和ItemTransform参数( Spread > Page > PageItem传家宝)之和。有关更多细节,请参见这里的答案:https://stackoverflow.com/a/12490600/1014822
或者,如果您控制文档创作过程,则可以确保作者使用深度来指示阅读顺序,这将为您节省一些编码。但是请注意,IDML也有Layer的概念,这进一步复杂化了深度问题。
当故事从一个框架流向另一个框架时,NextTextFrame和PreviousTextFrame只用于链接帧。值N表示在这个方向上没有链接帧。
https://stackoverflow.com/questions/15154675
复制相似问题