需求:在线编辑试卷,支持word导入,导出,支持数学公式。
这个需求在教育行业还是比较普遍的,就功能上来讲并没有什么难度的,只是这个公式弄起来有点麻烦,但至少是可以弄的。主要分为下面两个大流程
从html到word
前端公式编辑器当时我用的是mathmlEditor,当然现在可能有更好的编辑器了,毕竟已经过了3,4年了。不管用什么编辑器,至少满足两个要求,一是支持公式编辑, 二是公式有对应的mathml,并且可以传到后台。
数据到后台后我们有两个主要问题:一是如何生成word,二是如何将mathml转成word可以识别的openxml。
生成word的方法有很多种,这里介绍两种。一种是基于模板的方式,这种方式比较简单;另一种是第三方api如docx4j。前者一般适用于一些比较固定的格式,后者比较灵活,想要什么 样的格式完全自定义,当然也要花一定的时间熟悉第三方的api。
模板来源于自己定义好的word,另存为xml格式,把要替换的地方用特殊的标签替代,然后用比如freemartker这样的工具将真正的内容写入的模板中即可,这种方式网上的代码很多,大家有需要可以自己找找。 笔者当时的业务比较多,是要html转word的,html中是带样式的,这个是不可控的,因此当时选用的是docx4j的,这个还是比较强大的,常见的html中的功能都能实现,也是比较推荐的一种。效果图见:https://bbs.csdn.net/topics/390493859。当时弄好这个就离职 去上海了,后面就没有从事这个行业,也没有再关心过这个问题,所以没有在上面进行详细说明解决方案,还有可能是当时太年轻