结束目标
最终,我需要将我的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用户实现这一过程。
答案 0 :(得分:0)
如果文本被丢弃,则可能是映射不完整或文本不可标记,例如脚注,可能是文本变量或标题。 要使它们进入循环,您需要在导出之前将它们转换为常规文本。 但为了以防万一,这是一个简单的脚本。您可以尝试一下,看看它是否能够捕获有问题的文本。
Update-Package -reinstall
答案 1 :(得分:0)
显然,未映射到XML的对象是链接的InCopy文件,该文件已被锁定以防任何编辑。为了将其映射到XML,我必须在其中单击,然后选择编辑&gt; InCopy&gt;查看。在那之后,使用我上面的“计划第一”,它完全没有任何困难。