0

我正在努力完成一项不可能完成的任务。我需要在实现 Javascript Rhino 引擎的 ServiceNow(服务器端)上生成 docx 文档。在客户端做非常容易,我通常使用 docxtemplater 或类似的优秀库。这里的问题是我们需要在服务器上构建它并使用 ServiceNow 技术(脚本包括等)。也就是说,我正在尝试移植客户端 docxtemplater 版本,但我很挣扎,因为在服务器上没有 DOM 的概念。同时,使用服务器端版本也很困难,因为 ServiceNow 使用的不是 Node js 而是 Rhino,而且所有的库都是基于 Node.js 的。我能够使用 vanilla js 做的最好的事情是生成一个数据 uri,当从浏览器下载时,它会返回一个 docx 文档,但如果有人有任何建议,我会徘徊。

4

1 回答 1

0

至少有两种方法可以做到这一点。一种是拥抱噩梦,要么将 OpenXml JS 库转换为 ES5 兼容性,要么重写它们。另一种是创建一个 MS Word 模板,编码为 Base64 文本(因为它是压缩的 XML)并保存在 ServiceNow 中,然后使用 ServiceNow XMLDocument2库解压缩并遍历 XML 以更新文本。最后,您重新压缩并保存文件以创建更新的 OpenXml 文档。

第二种解决方案要求您在 ES5 中获取 JSZip。

我的解决方案的源代码目前是专有的,我不能随意分享它,但可以这样做。只要确保你有足够大的预算,因为它不是微不足道的,并且需要相当长的时间来实施。

于 2021-08-03T13:51:05.273 回答