word 转 html cms,Java 将Word文件转换为HTML格式文件
前言:在很多时候我们都需要到项目中导入word文档,但是后期再次在前段显示这个文档的时候前端往往需要的是html格式的,所以这个时候就会提出一个需求: 你们存文档的时候能不能存成html格式的? 于是这篇文章的内容就可以满足这个需求
我是通过MultiPartFile 类来实现的,上代码:
一、首先导入需要的依赖包:
org.apache.poi
poi-scratchpad
3.17
org.apache.poi
poi-ooxml
3.17
fr.opensagres.xdocreport
fr.opensagres.xdocreport.converter.docx.xwpf
2.0.1
二、编写代码:
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);
//转换的方法
public File convert(MultipartFile file) {
//获得文件的名字
String filename = file.getOriginalFilename();
//获得文件的扩展名
String suffix=filename.substring(filename.lastIndexOf("."));
String newName=UUID.randomUUID().toString();
// TODO 需要保存在一个新的位置
//将文件保存在D:/test/文件下
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() {
@Override
public 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文件转换为html
File file = convert(attachfile);
// 读取html文件
if (file != null) {
return "文件转换成功"
}
return "文件转换失败";
}
代码的含义已经在代码行的注释上有了,哪里有问题,欢迎大家随时在评论下方留言!
word 转 html cms,Java 将Word文件转换为HTML格式文件相关推荐
- msg文件转成html文件,如何将MSG格式的文件转换为PDF格式文件?
三.如何将MSG格式的文件转换为PDF格式的文件? 想要随时查看MSG格式文件的话,格式转换就成为了理想的途径,下面将教大家将MSG格式的文件转换为PDF格式文件三种方式,一起去学习一下吧. 1.借助 ...
- 如何将csv格式文件转换为Json格式文件?
如何使用python将csv格式文件转换为Json格式文件? 文章目录 如何使用python将csv格式文件转换为Json格式文件? 前言 一.使用execl方式打开csv文档 二.python转换代 ...
- ncm格式文件转换为mp3格式文件
我们经常会遇到ncm格式的文件,然而,有了一款小工具,我们可以轻松将ncm格式转换为常见的mp3格式,以便更方便地播放和共享音乐.本文将介绍这个小工具的实现方式,让我们一起来看看吧! 首先,让我们来看 ...
- 【方法指南】将以逗号为分隔值的文件转换为excel格式文件
将以逗号为分隔值的文件转换为excel格式文件 1 项目场景 2 解决方案 1 项目场景 以逗号为分隔值的.txt文件转换为excel格式文件. 2 解决方案 以逗号为分隔值的文件转换为excel格式 ...
- C#实现csv文件or xls文件转换为txt格式文件的源码
在做C#对接PLC数据写入.采集时,项目有一个环节需要把 csv或xls格式的文件转换为txt格式的文件. 以下是核心源码,未做包装. 聪明的你可以把它写成winform, 但请不要以此为任何商业目的 ...
- linux ubuntu下怎样将pdf格式文件转换为doc格式文件,如何在Ubuntu命令行上将文档转换为PDF格式...
在打印,共享和通过电子邮件发送文档(尤其是较大的文档)时,PDF或可移植文档格式通常是首选.对于Windows和macOS,您可能非常熟悉,也依赖于广泛使用的Acrobat产品进行pdf创建,查看和编 ...
- uiautomator日志文件转换为xml格式文件
如果想把uiautomator的日志文件,转换成漂亮的xml文件,那么可以使用automator-log-converter.jar工具, 工具使用方法: 使用工具automator-log-conv ...
- linux ubuntu下怎样将pdf格式文件转换为doc格式文件,Ubuntu环境下把word文档转成pdf,把pdf文件转成jpg...
环境搭建 使用语言 python3 安装imagemagick(pdf转jpg是内部需要调用到此工具) apt-get install imagemagick 安装libreoffice(此工具用于将 ...
- 手机上怎么打开md格式的文件_一键就能将PDF转换为各种格式文件,无奈知道的人实在太少了...
在我们的工作中,不少人都喜欢使用PDF文件进行传输,既稳定也方便.但是大家都知道,转换成PDF文件后我们就不可以对文件内容进行修改了,如果我们需要再次进行修改的话,这就有点难弄了. 别担心,今天小编将 ...
最新文章
- CEGUI中文处理(补)
- 宝马戴姆勒、大众福特 自动驾驶圈又添新团伙
- 浅析文件传输协议 (ftp) 的工作原理
- 呦乐乐_百科讲解大全
- 破解校园网锐捷无法开热点问题
- 【C#网络编程系列】专题十:实现简单的邮件收发器
- 宠物领养平台的分析与实现
- 模拟电子技术基础-第一章-常用半导体器件
- 关于USB设备芯片型号检测工具
- OptiFDTD应用:纳米盘型谐振腔等离子体波导滤波器
- ceph rbd mysql_ceph-rbd使用
- day 05 random time sys os pickle json re模块 爬取dytt
- 华为鸿蒙 OS 尝鲜,跑了个 “hello world”!跑通后,我特么开始怀疑人生...
- 新建一个html代码页面,三分钟教你创建一个简单的网页
- HDU 6058 Kanade's sum 逆序求第k大
- 电脑烤机了会有损伤吗,AIDA64一般烤多久
- 使用Audacity软件对清浊音进行时频分析并描述其特点
- 迈阿密大学的计算机系咋样,迈阿密大学牛津分校计算机专业如何?过来人告诉你...
- java word 水印_如何通过Java添加水印到Word文档
- threejs视频教程学习(4):贴图、材质、光线
热门文章
- CentOS7安装Hadoop2.7完整流程
- Java 解决采集UTF-8网页空格变成问号乱码
- idea lombok 插件安装
- [转载] java左移右移和无符号右移
- c++ cdi+示例_C ++“或”关键字示例
- dbms系统 rdbms_DBMS与传统文件系统之间的区别
- java的equals方法_Java LocalDateTime类| 带示例的equals()方法
- kadane算法_使用KADANE的算法求最大子阵列和
- tsql是mysql中的吗_Mysql中的sql是如何执行的
- c#如何实现叫号操作_微信预约排队叫号系统操作指南