使用xdocreport实现word转html
2022-04-06 本文已影响0人
任未然
一. 概述
现在企业系统很多都有在线编辑的需求, 很多都是采用富文本方案解决(因为免费且简单), 但企业很多文件都是word文档编写的, 让他们重新在富文本写一遍加上格式调整,这是非常大的工作量. 这时候就会提出word文档导入了, 因为富文本是html格式的, 所以word导入就要转html. 查阅了网上很多开源的解决方案, 但基本都没有能把格式转换的很完美的, 最后选了xdocreport, XDocReport是开源框架中转换格式比较好的, 建议word文档格式用
.docx
二. 使用
2.1 引入依赖
<dependency>
<groupId>fr.opensagres.xdocreport</groupId>
<artifactId>fr.opensagres.poi.xwpf.converter.xhtml</artifactId>
<version>2.0.2</version>
</dependency>
注意:
fr.opensagres.poi.xwpf.converter.xhtml
已经包含org.apache.poi
, 如果转换报错,可能是你单独引入的poi
包版本过低, 请升级到4.0.1
以上
2.2 docx转html
import fr.opensagres.poi.xwpf.converter.core.ImageManager;
import fr.opensagres.poi.xwpf.converter.xhtml.XHTMLConverter;
import fr.opensagres.poi.xwpf.converter.xhtml.XHTMLOptions;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.junit.Test;
import java.io.*;
public class WordToHtml {
/**
* 将Word2007+转成Html
*
* @throws Exception
*/
@Test
public void word2007ToHtml() throws Exception {
File file = new File("~/123.docx");
/* 判断是否为docx文件 */
if (file.getName().endsWith(".docx") || file.getName().endsWith(".DOCX")) {
// 1) 加载docx文档生成 XWPFDocument 对象
XWPFDocument document = new XWPFDocument(new FileInputStream(file));
// 2) 设置装换参数
XHTMLOptions xhtmlOptions = XHTMLOptions.create();
// 设置图片管理器,把图片上传到服务器
xhtmlOptions.setImageManager(new ImageManager(new File(""),""){
// 图片访问路径
private String imageUrl;
@Override
public void extract(String imagePath, byte[] imageData) throws IOException {
// 上传文件,设置图片url. imageData:图片数据
imageUrl = "http://hello_world/demo.png";
}
@Override
public String resolve(String uri) {
// 返回图片访问路径
return imageUrl;
}
});
// 转html输出
OutputStream out = new FileOutputStream("~/123.html");
XHTMLConverter.getInstance().convert(document, out, xhtmlOptions);
} else {
System.out.println("Enter only as MS Office 2007+ files");
}
System.out.println("转换结束");
}
}