java将Word文件转换为html文件
我这里是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文件相关推荐
- 使用Jacob实现将Word文件转换为Pdf文件
在某些业务场景下,可能需要将Word文件转换为Pdf文件的需求,Word文件编辑方便,而Pdf文件查看更方便,并且格式基本不会变化,同时可以避免被误编辑. 如果使用的是Java语言,那么可以借助于Ja ...
- python批量pdf转word,python批量实现Word文件转换为PDF文件
本文为大家分享了python批量转换Word文件为PDF文件的具体方法,供大家参考,具体内容如下 1.目的 通过万能的Python把一个目录下的所有Word文件转换为PDF文件. 2.遍历目录 作者总 ...
- java将HTML文件转化为pdf文件,如何使用Java将HTML网页转换为PDF文件
我一直在互联网上搜索如何使用Java将HTML页面转换为PDF文件.我发现了很多指针,简而言之,它们不起作用或难以实现.我也下载了一个商业产品,pdf4ml;该API是我很乐意与之合作的,除了当我在维 ...
- [JAVA使用技巧]Java抽取Word和PDF格式文件_网络大本营
Java抽取Word和PDF格式文件的四种武器(1) 很多人用java进行文档操作时经常会遇到一个问题,就是如何获得word,excel,pdf等文档的内容?我研究了一下,在这里总结一下抽取word, ...
- 使用java程序将ceb文件转换为pdf文件
要使用 Java 程序将 CEB 文件转换为 PDF 文件,你可以使用 Apache POI 库来读取 CEB 文件并解析其内容. Apache POI 是一个开源的 Java 库,可以用于读取和写入 ...
- python批量操作word文档实战_python批量实现Word文件转换为PDF文件
本文为大家分享了python批量转换Word文件为PDF文件的具体方法,供大家参考,具体内容如下 1.目的 通过万能的Python把一个目录下的所有Word文件转换为PDF文件. 2.遍历目录 作者总 ...
- LabWindows/CVI系列——CVI下Word文件转换为PDF文件
CVI下Word文件转换为PDF文件 目录: 需求场景 环境说明 所需文件 步骤 需求场景: 在某型号机电集成测试系统中,需要将试验报表(Word格式)转换为PDF文档,以便不易修改和查看. 环境说明 ...
- java代码实现excel文件转换为csv文件
java代码实现excel文件转换为csv文件 pom文件导入 <dependencies><dependency><groupId>org.springframe ...
- 将HTML文件转换为PDF文件(Thymeleaf模板转换,简单解决中文问题, 解决HTML带图片转换PDF文件问题)
将HTML文件转换为PDF文件 一.导入依赖 <!-- itext生成Pdf --> <dependency><groupId>com.itextpdf</g ...
- php生成图片文件流,php如何将base64数据流文件转换为图片文件?
2017-03-07 在开发中,自己遇到一个前端在上传图片的时候,使用的base64数据流文件显示的图片. 也就是说 ***image/后面的jpg是我们的图片文件格式,(base64,)后面的很大一 ...
最新文章
- mysql 单实例部署_MySQL 5.5单实例 编译安装
- N-GRAM模型的概率公式
- vrp车辆路径问题 php,蚁群算法在车辆路径问题(VRP)中的应用.ppt
- ip为 : 202.76.52.142/30 怎么看?
- max_connect_errors 疏忽
- cmd窗口快速定位到具体文件夹方法
- python-循环-通过while循环完成一个电子钟的模拟
- 沉浸文化获星瀚资本百万元级种子轮投资,星瀚资本投资
- 拳王公社:缺流量难变现?文库引流让你0成本可获5000精准粉!
- 数据结构二叉树的建立代码_二叉树就是这么简单
- 【实验技术笔记】细胞表型检测之细胞周期(PI 染色)
- Flask--jinjia2模板
- 【No buffer space available】异常解决
- 比较自然语言与计算机语言,计算机语言与自然语言的比较研究.pdf
- x265中Encoder::encode流程
- How to do video broadcast using multicast group?
- 2019-行远自迩,登高自卑
- Visual studio 2017中 Javascript对于Xrm对象模型没有智能提示的解决办法
- 2014年7月份第3周51Aspx源码发布详情
- 什么是桌面虚拟化,实施桌面虚拟化有什么好处?
热门文章
- 【大数据部落】WEKA文本挖掘分析垃圾邮件分类模型
- 【大数据部落】R语言实现:混合正态分布EM最大期望估计法
- 可编译的java代码_有没有编译方法可以运行Java代码?
- 2018 【第九届蓝桥杯省赛】 C/C++ B组
- (10)机器学习_K邻近算法
- SQL Server添加Check约束
- 搜索树判断 (25 分)(先序建立二叉树)
- calendar获取本周一的日期_Java日期时间API系列1-----Jdk7及以前的日期时间类
- 计算机操作系统笔记(一)
- Caffe学习:使用pycaffe读取caffemodel参数