在java开发中,会遇见一些让生成doc格式的功能,这次应客户要求,在实际开发这项功能时有了一些心得体会,可能我的体会不全或者不正确,在此说声抱歉。
开发跟着需求走,这次的功能需求如下:
首先服务器是linux的,这个word文档分为两个部分,其中一部分由固定的数据和固定的格式组成,另一部分则是用户在网上输入一些语句(包含了各种字体,颜色,样式),文章要把HTML转为word的方式来写入(两部分要在一份文档里)。同时word要有页脚和水印。
因为之前并没有接触过类似的功能,所以自己在做之前,没有了解过各个开源组件之间的区别,走了许多弯路。
最开始考虑到使用poi,通过事先写好模板的方式,用poi去替换模板里特定的字段,用这种方式可以完美的解决水印和页脚问题,但是这种方式,无法动态的生成,poi的HTML转WORD方法只能写在一个新的word里,没法在已有的word里面进行续写,故此放弃这种方式。
后开始使用itext,itext不使用模板,用java语言来进行整个word的编写,并且能够将HTML转换为WORD并写入word里的特定位置,并且支持图片写入(但必须保证图片路径正确),唯一需要注意的是HTML的各种标签属性需要用replaceAll("\"", "\\\"")来进行转换,不然要报错。但是后来又查询了一下itext的方法,发现这货不支持doc的水印功能(我的心情是崩溃的)。
因为服务器的原因所以没有去使用jacob的需要调用com的组件,而且经费有限也没有去使用pageoffice的收费的东西。
在最后,经过与项目负责人的商量,告诉用户,生成的word没法加上水印,让用户自行添加,(完事)