好的,所以这是一个非常笼统和模糊的问题,所以请让我详细说明。
我们有一个庞大的代码库,过去几年我们将其拆分为更多独立的独立库。
更大、更笨重的部分之一是我们的 Word 导出模块。它docx4j
目前使用,但是我们遇到带有大量图片的大型导出的内存问题。除此之外,由于我们的领域模型的变化,更新导出器非常困难。
自从有人研究它已经有一段时间了(比如几年......),所以我自己调查了 2021 年生成 Word 文档的状态。我希望很多事情都发生了变化,但是一些谷歌搜索让我发布了2010 年和 2012 年的图书馆。当然,2012 年的图书馆可能意味着它就是那么好。
我已经确定了以下解决方案,尽管我可能遗漏了很多:
- Docx4j (JVM),仍在维护,我们遇到了内存问题。
- 带有内容控制数据绑定的 Docx4j。似乎是某种使用模板的方法?
- Apache POI (JVM),对 Excel 部分有一定的经验,对 Word 部分没有经验。网上的“共识”似乎是 Docx4j 更加用户友好。
- 贾斯珀报告。对此一无所知。
- DocX,.NET 库,没有经验。
- 使用 Office.js (JS) 的 Office 加载项。来自微软的官方 API。在 Word 中的客户端上运行,因此需要连接到 API。
- docxtemplates(节点/浏览器)。没有经验。看起来很完整,但不知道性能如何。
- officegen(节点)。2019 年最后一次发布。
- 碳(节点)。https://github.com/Ideolys/carbone。也没有经验。
- 可能更多...
因此,正如预期的那样,JS 中的许多库也随之出现。
看看我的要求:
- 使用模板会很好
- 将它作为服务运行会很好
- 高效(内存方面,不介意是否需要一些时间来生成)
我们有一个相当不错的 JSON API 可用,它非常易于维护,并且可以很好地映射到我们的域模型。我的偏好当然是使用它作为来源。
人们的经历是什么和/或我错过了一些非常好的图书馆?