一般来说两种途径。一种是利用插件,比如PageOffice。好处是服务端有一整套的开发接口,劣势是需要安装插件,客户端需要有Word等Office应用程序安装,不同的客户端环境不同可能造成后继使用过程中的维护量。
还有一种是无插件的方式,Office 365就是典型的,不过如果是私有化部署,就不能用Office 365了。
还有一个是uzer.me,能提供无插件的原生Office编辑,提供JS SDK和REST API,各种编程语言都能对接。好处是无插件,劣势是只支持webRTC的浏览器,比如火狐、谷歌,360极速等,反正IE是不支持的(听说最近IE也能支持,但是要装插件了)。
还有一种在线编辑,是采用类似Word的模式,而实际更多是一个富文本的编辑器,这个用HTML就可以实现,有一些开源的工具的。无非是把Word和H5要格式互转。这个可能对于合同来说,容易丢失格式。如果格式是固定的话,会简单一些。
可以用第三方服务接口实现,但安全性要好,文档不能泄露出去poi里有个ExcelToHtmlConverter 和 WordToHtmlConverter
这是在网上找的一段代码我没试
HWPFDocumentCore wordDocument = WordToHtmlUtils.loadDoc(new FileInputStream("D:\\temp\\seo\\1.doc"))
WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(
DocumentBuilderFactory.newInstance().newDocumentBuilder()
.newDocument())
wordToHtmlConverter.processDocument(wordDocument)
Document htmlDocument = wordToHtmlConverter.getDocument()
ByteArrayOutputStream out = new ByteArrayOutputStream()
DOMSource domSource = new DOMSource(htmlDocument)
StreamResult streamResult = new StreamResult(out)
TransformerFactory tf = TransformerFactory.newInstance()
Transformer serializer = tf.newTransformer()
serializer.setOutputProperty(OutputKeys.ENCODING, "UTF-8")
serializer.setOutputProperty(OutputKeys.INDENT, "yes")
serializer.setOutputProperty(OutputKeys.METHOD, "html")
serializer.transform(domSource, streamResult)
out.close()
String result = new String(out.toByteArray())
System.out.println(result)
需求是在Java中处理Word文档还是要在网页中在线编辑文档?如果是用Java处理Word文档,我记得有个库是Apache POI,功能还是蛮强大的。
如果要网页端在线编辑Word文档,推荐使用桐享EaaS,有SDK的。客户端无需安装Word,也无需安装插件。对用户来说非常方便,只要一个浏览器就可以了。