Docxtemplater插入普通xml

时间:2014-02-09 11:13:55

标签: javascript xml coffeescript docx docxtemplater

我正在使用edi9999的DocxTemplater library作为从模板和JSON数据创建.docx报告的解决方案,我很满意。

但是,现在我必须在报告中突出显示一些词语。例如,我需要用{contents}替换一些大文本,其中突出显示的几个单词。

这意味着我在这里有两个解决方案:

  1. 在我的数据中使用某种标记(例如in this data one {highlight(red)}{word} is red,然后由DocxTemplater解释。
  2. 直接用所需的xml替换标签。例如,我将{contents}替换为此xml(存储在我的JSON数据中为"contents"字段):<w:r> <w:rPr> <w:highlight w:val="cyan"/> </w:rPr> <w:t>lol</w:t> </w:r>。如果我现在这样做,我会在<w:r><w:t>HERE</w:t></w:r>中嵌入我的XML,以便MS Word认为该文件已损坏。
  3. 对于“原始”xml数据,我想使用某种特殊标记,例如{@myXmlData},这会阻止库使用<w:r><w:t></w:t></w:r>包围内容。

    我认为第二种解决方案在很多方面都很优越且非常灵活:它允许用户使用DocxTemplater,即使它不能满足他们的某些需求。他们可以只使用XML来满足他们的特定需求。

    我认为这对DocxTemplater库来说真的很棒。

    但是,现在我只是想解决我的问题,而且我没有时间彻底研究或修改图书馆的代码。

    如果有人指出图书馆代码中的位置以及如何轻松扩展它以添加此功能的想法,那就太棒了。

    编辑:现在支持此功能!查看https://github.com/edi9999/docxtemplater/issues/7

1 个答案:

答案 0 :(得分:0)

我已经在https://github.com/edi9999/docxtemplater/issues/7

之后实现了这一点

你可以写

在你的docx中:

{@ rawXml}

在您的数据中:

{
  rawXml:'<w:p> <w:r> <w:rPr> <w:highlight w:val="cyan"/>
</w:rPr> <w:t>lol</w:t> </w:r> </w:p>'
}