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相关的工具库。