3

我是 IDML 的新手,我正在努力理解这一点。

我发现 IDML 是包含多个 XML 文件的 zip 文件。我打开designmap.xml并看到了元素中的StoryLine属性。Document但是,该属性中的顺序StoryLine不一定与实际内容上显示的文本的逻辑顺序一致。

例如,IDML SDK 中的 BusinessCardTemplate 具有以下逻辑顺序:

John Doe
Software Developer
InDesign
Adobe Systems Incorporated
801 North 34th Street
Seattle, WA 98103
Phone: 206.675.7000
jdoe@adobe.com
www.adobe.com

但是根据StoryList属性,以下是它引用的顺序如下:

Software Developer
InDesign
John Doe
jdoe@adobe.com
www.adobe.com
Phone: 206.675.7000
801 North 34th Street
Seattle, WA 98103
Adobe Systems Incorporated

有没有办法从 IDML 的内容中找出这些故事的逻辑顺序(最好是从左上角到左下角)?

提前致谢

4

2 回答 2

3

故事只是文本内容,从它在文档中的使用中抽象出来。如果您想以正确的顺序获取故事,您需要:

1) 在解压后的 IDML 文件的根目录中找到 designmap.xml(首先解压整个文件——我想你已经知道了)

2)通过查找展开元素从中获取展开的顺序:

<idPkg:Spread src="Spreads/Spread_uc6.xml" />

3) 在每个展开的文档中,获取 TextFrames 的顺序:

<TextFrame Self="uec" ParentStory="uda" PreviousTextFrame="n" NextTextFrame="n" ContentType="TextType" ... (many more parameters) ... />

4) 检查每个文本框架的 ParentStory 参考:

<TextFrame Self="uec" ParentStory="uda" ... />

5)找到相关的故事:在这种情况下,它将是Stories/Story_uda.xml.

在一个简单的文档中,每个 TextFrame 都与一个故事相匹配,这将为您提供故事在文档中出现的顺序。

然而,在某些情况下——例如链接到单个故事的多个框架,或线程框架,其中一个故事被拆分为多个 TextFrames——这种映射不会那么简单。还要注意 MasterSpreads 引入的复杂性。

您会发现 Adob​​e IDML 文档很有用:http: //www.adobe.com/devnet/indesign/documentation.html#idml

于 2012-08-27T14:29:08.613 回答
1

直接使用 Stories 是非常困难的。如果您使用标记功能会更容易。打开您的 InDesign 文件并导入具有正确数据结构的 XML 文件。然后,您可以标记文档的各个部分以映射到 XML 节点。

完成后将文档导出到 IDML,然后在 XML 目录中查找文件BackingStory.xml,您将在其中找到如下节点:

<XMLElement Self="di3i29" MarkupTag="XMLTag/Instructions" XMLContent="u16a" />

这定义了 Instructions XML 节点到 Story_u16a.xml 文件的映射。但是,您不再需要担心 Story,因为您现在已经可以访问将被注入 Story 的节点值。

本教程介绍InDesign XML 标记

于 2012-04-10T01:57:45.930 回答