在 Javascript Rhino 上生成 docx

问题描述

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

解决方法

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

第二种解决方案需要你在 ES5 中获得 JSZip。

我的解决方案的源代码目前是专有的,我不能随意分享,但可以做到。请确保您有足够大的预算,因为这不是微不足道的,需要花费大量时间来实施。