我这里是maven项目,只需在资源文件中配置,会自动下载ar包

在pox.xml中配置

<!--word转html https://mvnrepository.com/artifact/org.apache.poi/poi-scratchpad --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>3.17</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version></dependency><!-- https://mvnrepository.com/artifact/fr.opensagres.xdocreport/fr.opensagres.xdocreport.converter.docx.xwpf --><dependency><groupId>fr.opensagres.xdocreport</groupId><artifactId>fr.opensagres.xdocreport.converter.docx.xwpf</artifactId><version>2.0.1</version></dependency>

java代码

package com.lmt.service.file;import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.converter.PicturesManager;
import org.apache.poi.hwpf.converter.WordToHtmlConverter;
import org.apache.poi.hwpf.usermodel.PictureType;
import org.apache.poi.util.IOUtils;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import org.w3c.dom.Document;import fr.opensagres.poi.xwpf.converter.core.ImageManager;
import fr.opensagres.poi.xwpf.converter.xhtml.XHTMLConverter;
import fr.opensagres.poi.xwpf.converter.xhtml.XHTMLOptions;@Component
public class WordToHtml {private static final Logger logger = LoggerFactory.getLogger(WordToHtml.class);@Autowiredprivate ParseFile parseFile;public File convert(MultipartFile file) {String filename = file.getOriginalFilename();String suffix=filename.substring(filename.lastIndexOf("."));String newName=UUID.randomUUID().toString();// TODO 需要保存在一个新的位置File convFile = new File("D:/test/" + newName +suffix);FileOutputStream fos = null;try {convFile.createNewFile(); fos = new FileOutputStream(convFile); fos.write(file.getBytes());} catch (IOException ex) {logger.error("上传文件出错!", ex);return null;} finally {IOUtils.closeQuietly(fos);}// 输入文件名的所在文件夹// 加上反斜杠String parentDirectory = convFile.getParent();if (!parentDirectory.endsWith("\\")) {parentDirectory = parentDirectory + "\\";}if (filename.endsWith(".docx")) {return docxConvert(parentDirectory, convFile.getAbsolutePath(),newName);} else if (filename.endsWith(".doc")) {return docConvert(parentDirectory, convFile.getAbsolutePath(),newName);} else {logger.error("不支持的文件格式!");return null;}}private File docxConvert(String parentDirectory, String filename,String newName) {try {XWPFDocument document = new XWPFDocument(new FileInputStream(filename));XHTMLOptions options = XHTMLOptions.create().setImageManager(new ImageManager(new File(parentDirectory), UUID.randomUUID().toString())).indent(4);FileOutputStream out = new FileOutputStream(new File(parentDirectory + newName+ ".html"));XHTMLConverter.getInstance().convert(document, out, options);return new File(parentDirectory + newName+ ".html");} catch (IOException ex) {logger.error("word转化出错!", ex);return null;}}private File docConvert(String parentDirectory, String filename,String newName) {try {HWPFDocument document = new HWPFDocument(new FileInputStream(filename));WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument());// converter默认对图片不作处理,需要手动下载图片并嵌入到html中wordToHtmlConverter.setPicturesManager(new PicturesManager() {@Overridepublic String savePicture(byte[] bytes, PictureType pictureType, String s, float v, float v1) {String imageFilename = parentDirectory + "";String identity=UUID.randomUUID().toString();File imageFile = new File(imageFilename, identity+s);imageFile.getParentFile().mkdirs();InputStream in = null;FileOutputStream out = null;try {in = new ByteArrayInputStream(bytes);out = new FileOutputStream(imageFile);IOUtils.copy(in, out);} catch (IOException ex) {logger.error("word转化出错!", ex);} finally {if (in != null) {IOUtils.closeQuietly(in);}if (out != null) {IOUtils.closeQuietly(out);}}return imageFile.getName();}});wordToHtmlConverter.processDocument(document);Document htmlDocument = wordToHtmlConverter.getDocument();ByteArrayOutputStream out = new ByteArrayOutputStream();DOMSource domSource = new DOMSource(htmlDocument);StreamResult streamResult = new StreamResult(out);TransformerFactory tf = TransformerFactory.newInstance();Transformer serializer = tf.newTransformer();serializer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");serializer.setOutputProperty(OutputKeys.INDENT, "yes");serializer.setOutputProperty(OutputKeys.METHOD, "html");serializer.transform(domSource, streamResult);out.close();String result = new String(out.toByteArray());FileWriter writer = new FileWriter(parentDirectory + newName + ".html");writer.write(result);writer.close();                        } catch (IOException | TransformerException | ParserConfigurationException ex) {logger.error("word转化出错!", ex);}return new File(parentDirectory + newName + ".html");}/*** 将上传的Word文档转化成HTML字符串* @param attachfile* @return*/public String convertToHtml(MultipartFile attachfile) {String wordContent = "";// 将Word文件转换为htmlFile file = convert(attachfile);// 读取html文件if (file != null) {wordContent = parseFile.readHtml(file);}return wordContent;}}

转载于:https://www.cnblogs.com/chen-yun/p/9274242.html

java将Word文件转换为html文件相关推荐

  1. 使用Jacob实现将Word文件转换为Pdf文件

    在某些业务场景下,可能需要将Word文件转换为Pdf文件的需求,Word文件编辑方便,而Pdf文件查看更方便,并且格式基本不会变化,同时可以避免被误编辑. 如果使用的是Java语言,那么可以借助于Ja ...

  2. python批量pdf转word,python批量实现Word文件转换为PDF文件

    本文为大家分享了python批量转换Word文件为PDF文件的具体方法,供大家参考,具体内容如下 1.目的 通过万能的Python把一个目录下的所有Word文件转换为PDF文件. 2.遍历目录 作者总 ...

  3. java将HTML文件转化为pdf文件,如何使用Java将HTML网页转换为PDF文件

    我一直在互联网上搜索如何使用Java将HTML页面转换为PDF文件.我发现了很多指针,简而言之,它们不起作用或难以实现.我也下载了一个商业产品,pdf4ml;该API是我很乐意与之合作的,除了当我在维 ...

  4. [JAVA使用技巧]Java抽取Word和PDF格式文件_网络大本营

    Java抽取Word和PDF格式文件的四种武器(1) 很多人用java进行文档操作时经常会遇到一个问题,就是如何获得word,excel,pdf等文档的内容?我研究了一下,在这里总结一下抽取word, ...

  5. 使用java程序将ceb文件转换为pdf文件

    要使用 Java 程序将 CEB 文件转换为 PDF 文件,你可以使用 Apache POI 库来读取 CEB 文件并解析其内容. Apache POI 是一个开源的 Java 库,可以用于读取和写入 ...

  6. python批量操作word文档实战_python批量实现Word文件转换为PDF文件

    本文为大家分享了python批量转换Word文件为PDF文件的具体方法,供大家参考,具体内容如下 1.目的 通过万能的Python把一个目录下的所有Word文件转换为PDF文件. 2.遍历目录 作者总 ...

  7. LabWindows/CVI系列——CVI下Word文件转换为PDF文件

    CVI下Word文件转换为PDF文件 目录: 需求场景 环境说明 所需文件 步骤 需求场景: 在某型号机电集成测试系统中,需要将试验报表(Word格式)转换为PDF文档,以便不易修改和查看. 环境说明 ...

  8. java代码实现excel文件转换为csv文件

    java代码实现excel文件转换为csv文件 pom文件导入 <dependencies><dependency><groupId>org.springframe ...

  9. 将HTML文件转换为PDF文件(Thymeleaf模板转换,简单解决中文问题, 解决HTML带图片转换PDF文件问题)

    将HTML文件转换为PDF文件 一.导入依赖 <!-- itext生成Pdf --> <dependency><groupId>com.itextpdf</g ...

  10. php生成图片文件流,php如何将base64数据流文件转换为图片文件?

    2017-03-07 在开发中,自己遇到一个前端在上传图片的时候,使用的base64数据流文件显示的图片. 也就是说 ***image/后面的jpg是我们的图片文件格式,(base64,)后面的很大一 ...

最新文章

  1. mysql 单实例部署_MySQL 5.5单实例 编译安装
  2. N-GRAM模型的概率公式
  3. vrp车辆路径问题 php,蚁群算法在车辆路径问题(VRP)中的应用.ppt
  4. ip为 : 202.76.52.142/30 怎么看?
  5. max_connect_errors 疏忽
  6. cmd窗口快速定位到具体文件夹方法
  7. python-循环-通过while循环完成一个电子钟的模拟
  8. 沉浸文化获星瀚资本百万元级种子轮投资,星瀚资本投资
  9. 拳王公社:缺流量难变现?文库引流让你0成本可获5000精准粉!
  10. 数据结构二叉树的建立代码_二叉树就是这么简单
  11. 【实验技术笔记】细胞表型检测之细胞周期(PI 染色)
  12. Flask--jinjia2模板
  13. 【No buffer space available】异常解决
  14. 比较自然语言与计算机语言,计算机语言与自然语言的比较研究.pdf
  15. x265中Encoder::encode流程
  16. How to do video broadcast using multicast group?
  17. 2019-行远自迩,登高自卑
  18. Visual studio 2017中 Javascript对于Xrm对象模型没有智能提示的解决办法
  19. 2014年7月份第3周51Aspx源码发布详情
  20. 什么是桌面虚拟化,实施桌面虚拟化有什么好处?

热门文章

  1. 【大数据部落】WEKA文本挖掘分析垃圾邮件分类模型
  2. 【大数据部落】R语言实现:混合正态分布EM最大期望估计法
  3. 可编译的java代码_有没有编译方法可以运行Java代码?
  4. 2018 【第九届蓝桥杯省赛】 C/C++ B组
  5. (10)机器学习_K邻近算法
  6. SQL Server添加Check约束
  7. 搜索树判断 (25 分)(先序建立二叉树)
  8. calendar获取本周一的日期_Java日期时间API系列1-----Jdk7及以前的日期时间类
  9. 计算机操作系统笔记(一)
  10. Caffe学习:使用pycaffe读取caffemodel参数