如何将Indesign文件中的所有对象映射到XML

时间:2018-04-02 16:43:51

标签: javascript html xml adobe-indesign

结束目标

最终,我需要将我的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并保留映射,那么这也可能有效。

计划号码

如果我递归遍历allPageItems中的app.documents[0]并手动创建XML而不是使用mapStylesToXMLTags(),那么丢失的对象就像其他所有内容一样显示。

但是,我给XML元素的ID不会附加到InDesign元素,因为这些元素实际上并未正式“映射”到XML元素。它们在更改时不会自动更新。在对InDesign文件进行更改时,我将不得不覆盖所有XML,从而消除了data-id值的一致性。

另外,当我这样做的时候,一切都乱了,并且与在InDesign文件中布局的方式断开了。

如果我可以将所有内容都映射出来,那么第一号计划似乎仍然是最有希望的。

请在我身上轻松

我希望这一切都清楚。 FWIW,我是一个JS / HTML人,不是InDesign人。我是InDesign的新手,我只想弄清楚如何让我的组织中的InDesign用户实现这一过程。

2 个答案:

答案 0 :(得分:0)

如果文本被丢弃,则可能是映射不完整或文本不可标记,例如脚注,可能是文本变量或标题。 要使它们进入循环,您需要在导出之前将它们转换为常规文本。 但为了以防万一,这是一个简单的脚本。您可以尝试一下,看看它是否能够捕获有问题的文本。

Update-Package -reinstall

答案 1 :(得分:0)

显然,未映射到XML的对象是链接的InCopy文件,该文件已被锁定以防任何编辑。为了将其映射到XML,我必须在其中单击,然后选择编辑&gt; InCopy&gt;查看。在那之后,使用我上面的“计划第一”,它完全没有任何困难。