java实现word(docx)在线编辑(word转html,html转word)——代码实现

一、具体实现思路

1、docx转html

使用docx4j获取dcox文档的xml文件内容,然后使用dom4j进行解析,对于不同的内容,新建pojo类,将解析的内容封装进去,然后统一转换为html;
由于pojo类过多,所以这里就不展示一个个展示,最后会提供下载地址,
其中word中某些样式提供自定义的属性,如编号、项目符号、标题等

2、html转docx

根据之前自定义的属性,使用jsoup将html内容进行解析,然后生成docx文档;

其中具体代码,大家可下载 https://download.csdn.net/download/qq_38635531/11965679

二、资源说明

Word文档在线编辑功能说明
一、支持的文件类型:docx类型文档(即word2007)
二、Word转为html格式后的html页面结构
除表格外、所有的内容都需要在p标签内(包括图片),如图:
java实现word(docx)在线编辑(word转html,html转word)——代码实现_第1张图片
三、支持转换的内容
1.标题,如图
在这里插入图片描述
现在支持标题1-标题7,转换为HTML后,如图:
java实现word(docx)在线编辑(word转html,html转word)——代码实现_第2张图片
所有的标题转换后都会在p标签上带有”data-class”属性,该属性的值为标题级别,在web页面进行编辑,设置新的标题时也应该带有此属性;

2.普通段落内容
普通的段落内容,可转换的样式包括:背景颜色、字体颜色、字体大小、部分字体、段落左间距、段落对齐方式(左对齐,居中对齐,右对齐,两端对齐)、行高、粗体、斜体、下划线、删除线;
以上对应的样式分别对应如下html:background-color(英文名称颜色)、color(#00000)、font-size(单位px)、font-family、margin-left、text-align、line-height、font-weight:bold、font-style:italic、text-decoration:underline、text-decoration:line-through;
在web页面进行设置新的段落样式时,需要一一对应,不然解析不了。

3.图片
图片内容仍然是包裹在p标签内,其中图片具备的样式及属性如下:
样式:图片的左间距主要体现在其父标签p上,如图:
在这里插入图片描述
属性:具备width,height,不带任何单位,如上图;src(已自动转换为通过接口获取图片的地址)

4.表格
表格转为html后,其table标签与p标签为同一级别,所有table标签必须要有data-class=”table”及table-widths=”12-11-22”(代表每一列表格的宽度,以”-”分隔),表格以及td(单元格)的边框线宽、颜色,如下表。
border-top-color 上边框颜色
border-top-width 上边框宽度
border-right-color 右边框颜色
border-right-width 右边框宽度
border-bottom-color 下边框颜色
border-bottom-width 下边框宽度
border-left-color 左边框颜色
border-left-width 左边框宽度

如图:
java实现word(docx)在线编辑(word转html,html转word)——代码实现_第3张图片
所有边框宽度均以8/125px作为单位

表格分为普通表格和单元格合并后的表格:
普通表格(未进行单元格合并):
目前默认表格边框为有,具体样式见示例。普通表格的单元格内会镶嵌一个p标签,作为td单元格的内容,这个p标签与上述普通段落相同。
单元格合并:
行单元格合并无需新增任何属性,只需colspan属性即可,如图:
java实现word(docx)在线编辑(word转html,html转word)——代码实现_第4张图片
列单元格和并除了要在合并的起始单元格新增rowspan外,还需新增row-style="restart"属性,如图
java实现word(docx)在线编辑(word转html,html转word)——代码实现_第5张图片
并且被合并的单元格(除起始单元格外)不需要删除,只需要将他们hidden,同时添加属性row-style=“continue”,如图:
java实现word(docx)在线编辑(word转html,html转word)——代码实现_第6张图片

5.编号
编号目前仅支持7种格式的转换,如图:
java实现word(docx)在线编辑(word转html,html转word)——代码实现_第7张图片
编号是以段落p为单位,在web页面添加编号时,只需在该段落p标签添加属性num-class,值为上图对应的值,编号的内容(如1.2.3.)则放在1.标签中,如图:
java实现word(docx)在线编辑(word转html,html转word)——代码实现_第8张图片

其中num-class值8-1中的8代表编号的样式,1是一个随机数,用来辨别哪些编号属于同一个序列(一组),在前台进行编辑时,选择编号时,也需要在p上添加num-class。

6.项目符号
项目符号仅仅支持2种,也是html中li标签的两种type,如图:
在这里插入图片描述

支持下图的前两种项目符号,与其他段落不同,直接以li标签代替p标签,同样有num-class,两种项目符号对应的num-class值为4和5

java实现word(docx)在线编辑(word转html,html转word)——代码实现_第9张图片

你可能感兴趣的:(java)