业务场景
需求:根据富文本中的内容生成对应的word文档进行预览和下载功能。
实现: 采用 POIFSFileSystem 类相关实现,能够准确的将文字、格式相关内容转换成功,但是对于在线的网络图片,无法离线浏览或打开。因此最后采用Spire.doc中的工具进行转换(免费版本)。
官网网址:点击跳转
实现步骤
- 引入依赖
<dependency><groupId>e-iceblue</groupId><artifactId>spire.doc.free</artifactId><version>2.7.3</version>
</dependency>
- 工具类,导出word
public static void exportWord(HttpServletRequest request, HttpServletResponse response, String content, String fileName) {
try {
//新建Document对象Document document = new Document();//添加sectionSection sec = document.addSection();ByteArrayOutputStream os = new ByteArrayOutputStream();//添加段落并写入HTML文本sec.addParagraph().appendHTML(content);document.saveToStream(os,FileFormat.Docx);InputStream input = new ByteArrayInputStream(os.toByteArray());//输出文件request.setCharacterEncoding("utf-8");response.setContentType("application/msword");//导出word格式response.addHeader("Content-Disposition", "attachment;filename=" +URLEncoder.encode(fileName, "utf-8") + ".docx");ServletOutputStream ostream = response.getOutputStream();int len =-1;byte []by = new byte[1024];while((len = input.read(by))!=-1) {
ostream.write(by,0,len);}ostream.close();input.close();} catch (Exception e) {
e.printStackTrace();}}
在线网络图片,在离线情况下也能够正常预览。