html转换到word

最近在项目中需要将通过富文本编辑器处理过的文字转换为Word,查了很久,大家通常的解决办法是使用Jacob或POI等组件直接生成Word,但是都无法将富文本编辑器处理过的文字保留样式并保存为Word,最终以失败而告终,无奈只有自己研究Word的格式转换;

分析了转换过程,总体分两个步骤:

1、实现富文本中样式代码的分离;

2、保留CSS样式;

其实以上两个步骤是相互矛盾的处理过程,无法通过Jacob或POI组件加正则表达式过滤解决,于是进行了以下步骤的实验:

1、首先创建了一个空白word文档,格式(office 2003格式或office 2007格式)不限;

2、将word格式保存为html格式,通过Edit Plus打开,发现代码中使用了office的命名空间,同时使用了office命名空间的标签定义了CSS样式,自己测试了一下,将生成的html文件头和尾拷贝出来:代码如下:

[html] view plaincopy

<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
xmlns="http://www.w3.org/TR/REC-html40">

<!-- 富文本代码区 -->

</html>


以上HTML头是office的命名空间定义。

3、将使用富文本代码粘贴到红色标识的<!-- 富文本代码区 -->中,并以doc或docx格式保存文件;

4、大功告成,打开文件时,Word将会以“Web版视图”完美显示了富文本样式,成功解决了富文本代码中样式代码,并同时保留了格式;

java代码
public class HtmlToWord {
@Test
public void htmlToWord() throws IOException{
File file = new File("D:\\77.doc");
if(!file.exists()){
file.createNewFile();
}
FileOutputStream fos = new FileOutputStream(file);
StringBuffer sb = new StringBuffer("");
fos.write("<html xmlns:v=\"urn:schemas-microsoft-com:vml\"".getBytes());
fos.write("xmlns:o=\"urn:schemas-microsoft-com:office:office\"".getBytes());
fos.write("xmlns:w=\"urn:schemas-microsoft-com:office:word\"".getBytes());
fos.write("xmlns:m=\"http://schemas.microsoft.com/office/2004/12/omml\"".getBytes());
fos.write("xmlns=\"http://www.w3.org/TR/REC-html40\">".getBytes());
fos.write("<body>".getBytes());
fos.write("<img width=554 height=577 src=\"1212.jpg\">".getBytes());
fos.write("</body>".getBytes());
fos.write("</html>".getBytes());
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值