我使用 docxtemplater 将 Word 文档(我从云端加载)中的标签替换为实际值。
我使用的 Word 文档包含任意标签,因此我首先需要检查一个 Word 文档并获取它包含的所有标签的列表。为此,我使用InspectModule
,它被设置为docxtemplater.render()
. 然后我查询一个服务,我使用标签作为动态查询的参数。docxtemplater.setData(myData)
最后,我通过调用(again)将标签替换为各种查询结果docxtemplater.render()
。
问题是,当我使用 调用docxtemplater.render()
时InspectModule
,模块不仅会获取所有标签(这很好),还会将 Word 文档中的所有标签替换为字符串“undefined”(这对我的目的不利),因为我不想用字符串“undefined”替换标签,而是用我的查询结果转换为数据对象。
解决此问题的最佳方法是什么(本质上,我希望能够render()
多次调用)?从云端重新加载 Word 文档并重新开始docxtemplater
查询render()
数据?在第一次docxtemplater
调用之前深度复制对象,所以我有一个对象的“新”副本,可以用于第二次调用?或者我可以带一个参数调用,这样它就不会修改文档,或者是否有一种方法可以将对象设置回执行该方法之前的状态?还是有其他更好的选择?谢谢!render()
docxtemplater
render()
render()
reset()
docxtemplater
render()
代码:这让我得到了所有的标签,并用字符串“未定义”替换了 Word 文档中的所有标签。
const iModule = InspectModule();
const options = {modules: [this.iModule]};
const data = await fetch("something.docx");
const zip = new PizZip(data);
const document = new Docxtemplater(zip, options);
document.render();
const tags = Object.keys(this.iModule.getAllTags());