【发布时间】:2018-04-05 02:35:08
【问题描述】:
最终目标
最终,我需要将我的 InDesign 文件导出到 HTML,这样每个 HTML 块级元素都有一个唯一的 ID(只要它是唯一的就可以了),一个唯一的 ID无论用户对 InDesign 内容进行何种修改,它都保留在 InDesign 文件中并且不会更改,并且会在每个元素的 HTML 中导出。像这样的:
<p data-id="4j8w53">My first paragraph</p>
<p data-id="k39dh2">My second paragraph</p>
然后当 InDesign 用户更改内容并重新导出为 HTML 时,现有 ID 将保留,如下所示:
<p data-id="4j8w53">My first paragraph is awesome!</p>
<p data-id="lq09cf">My inserted paragraph</p>
<p data-id="k39dh2">My second paragraph</p>
如果有人知道这样做的简单方法,我很想听听。
计划一号
为了弄清楚这一点,我决定将 InDesign 文件中的所有内容映射到 XML,然后通过 JS 用户脚本将我的 ID 属性添加到 XML 项,然后通过另一个 JS 将 XML 导出为 HTML用户脚本。由于 XML 项目实际上映射到 InDesign 项目,因此 ID 将随着文本的变化而保留。
问题是:我似乎无法使用mapStylesToXMLTags() 函数将我的所有InDesign 内容 映射到XML。我在文件中有一堆stories,当我导出它时,其中一个从未出现在 XML 中。它根本就不见了。
如果我在使用mapStylesToXMLTags() 时能够让所有内容显示在导出的 XML 中,那可能会解决我的问题。
或者,如果有一种不同的映射机制可以将我的所有项目实际映射到 XML 并保留映射,那也可以。
计划二
如果我在app.documents[0] 中递归循环allPageItems 并手动创建XML 而不是使用mapStylesToXMLTags(),那么丢失的对象就会像其他所有对象一样显示出来。
但是,我为 XML 元素提供的 ID 不会附加到 InDesign 元素,因为这些元素实际上并未正式“映射”到 XML 元素。它们在更改时不会自动更新。当对 InDesign 文件进行更改时,我将不得不覆盖所有 XML,从而消除了 data-id 值的一致性。
另外,当我这样做时,一切都乱了套,并且与 InDesign 文件中的布局方式脱节。
如果我能将所有内容映射到地图上,一号计划似乎仍然最有希望。
请放轻松
我希望这一切都清楚。 FWIW,我是 JS / HTML 人,而不是 InDesign 人。我是 InDesign 新手,我只是想弄清楚如何为我所在组织的 InDesign 用户实现这个过程。
【问题讨论】:
标签: javascript html xml adobe-indesign