Java 实现 HTML 转 doc
文章目录
- 前言
- 一、引入依赖
- 二、实现转换
- 总结
前言
最近开发中,遇到需要将前端富文本编辑内容导出word的需求。由于富文本编辑主要是前端生成对应的html文本,服务器端基本没有做什么处理原封不动地保存。所以该需求实际上就是需要处理HTML和DOC之间的转换问题。
查找资料后,最后决定选用docx4j工具进行转换处理。下面开始代码实现。
一、引入依赖
<!--html-->
<dependency>
<groupId>org.docx4j</groupId>
<artifactId>docx4j-ImportXHTML</artifactId>
<version>${docx4j.version}</version>
<exclusions>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>
</exclusions>
</dependency>
二、实现转换
import lombok.extern.slf4j.Slf4j;
import org.docx4j.openpackaging.exceptions.Docx4JException;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import org.docx4j.openpackaging.parts.WordprocessingML.AltChunkType;
import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* <p>
* HTML 转换工具
* </p>
*/
@Slf4j
public class HtmlConvertUtils {
private HtmlConvertUtils() {
}
/**
* HTML 文件转 DOC 文件
*
* @param htmlPath html文件路径
* @param docPath doc文件路径
* @throws Docx4JException
* @throws IOException
*/
public static void html2Doc(String htmlPath, String docPath) throws Docx4JException, IOException {
// 构建文件对象
File htmlFile = new File(htmlPath);
File docFile = new File(docPath);
// html 转 doc
html2Doc(htmlFile, docFile);
}
/**
* HTML 文件转 DOC 文件
*
* @param htmlFile html文件
* @param docFile doc文件
*/
public static void html2Doc(File htmlFile, File docFile) throws Docx4JException, IOException {
// 1 读取 html 文件内容
String htmlContent = FileUtils.readContent(htmlFile);
// 2 如果目标路径不存在 则新建该路径
if (!docFile.getParentFile().exists()) {
docFile.getParentFile().mkdirs();
}
// html 转 doc
htmlContent2Doc(htmlContent, docFile);
}
/**
* HTML 内容转 DOC 文件
*
* @param html html 内容
* @param docPath doc文件路径
* @throws Docx4JException
*/
public static void htmlContent2Doc(String html, String docPath) throws Docx4JException {
File docFile = new File(docPath);
// 2 如果目标路径不存在 则新建该路径
if (!docFile.getParentFile().exists()) {
docFile.getParentFile().mkdirs();
}
// html 转 doc
htmlContent2Doc(html, docFile);
}
/**
* HTML 内容转 DOC 文件
*
* @param html html 内容
* @param docFile doc文件
* @throws Docx4JException
*/
public static void htmlContent2Doc(String html, File docFile) throws Docx4JException {
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();
MainDocumentPart mdp = wordMLPackage.getMainDocumentPart();
// wordMLPackage.setFontMapper(IFontHandler.getFontMapper());
// Add the Html altChunk
mdp.addAltChunk(AltChunkType.Html, html.getBytes());
// Round trip
WordprocessingMLPackage pkgOut = mdp.convertAltChunks();
pkgOut.save(docFile);
}
}
总结
以上Java 实现 HTML 转 DOC 的代码实现,本文仅仅简单介绍了docx4j的使用,这是java中转门用来处理doc相关的工具库。