Ai
1 Star 0 Fork 0

bhl/spring-boot-ssm

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
ConverFileToHtmlUtil.java 7.44 KB
一键复制 编辑 原始数据 按行查看 历史
bhl 提交于 2019-06-27 15:14 +08:00 . 更新 ConverFileToHtmlUtil.java
/**
* Project:homolo-dev-new-webapp
* File:ConverFileToHtmlUtil.java
* Copyright 2004-2019 Homolo Co., Ltd. All rights reserved.
*/
package com.example.demo.util.conver.office;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.apache.poi.hssf.converter.ExcelToHtmlConverter;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
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.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.tomcat.util.codec.binary.Base64;
import org.jsoup.Jsoup;
import org.w3c.dom.Document;
import fr.opensagres.poi.xwpf.converter.core.FileImageExtractor;
import fr.opensagres.poi.xwpf.converter.xhtml.XHTMLConverter;
import fr.opensagres.poi.xwpf.converter.xhtml.XHTMLOptions;
/**
* 文档转换类,doc,docx,xls,xlsx 类型转html.
* @author bhl
* @date 2019年6月26日
*/
public class ConverFileToHtmlUtil {
/**
* word03转html.
* @param inStream 源文件输入流
* @return html string
* @throws Exception e
*/
public String word2003ToHtml(InputStream inStream) throws Exception {
HWPFDocument wordDocument = new HWPFDocument(inStream);
WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(
DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument());
wordToHtmlConverter.setPicturesManager(new PicturesManager() {
@Override
public String savePicture(byte[] content, PictureType pictureType, String suggestedName, float widthInches, float heightInches) {
System.out.println("pictureType:" + pictureType.getMime() + "----" + pictureType.name() + pictureType.toString());
System.out.println(suggestedName);
//return "pics/" + suggestedName;
String base64 = Base64.encodeBase64String(content);
return "data:" + pictureType.getMime() + ";base64," + base64;
}
});
wordToHtmlConverter.processDocument(wordDocument);
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 id = writeFile(new String(out.toByteArray()), outPutFile, "UTF-8");
//System.out.println("conver after:" + id);
String content = new String(out.toByteArray());
org.jsoup.nodes.Document doc = Jsoup.parse(content);
content = doc.html();
return content;
}
/**
* word2007转html.
* @param inStream 源文件输入流
* @param picPath 图片保存路径
* @return html string
* @throws Exception e
*/
public String convert2007ToHtml(InputStream inStream, String picPath) throws Exception {
XWPFDocument wordDocument = new XWPFDocument(inStream);
File imageFolderFile = new File(picPath);
// XHTMLOptions options = XHTMLOptions.create().URIResolver(
// new FileURIResolver(imageFolderFile));
XHTMLOptions options = XHTMLOptions.create();
options.setExtractor(new FileImageExtractor(imageFolderFile));
options.setIgnoreStylesIfUnused(false);
options.setFragment(true);
options.URIResolver((uri) -> {
System.out.println(imageFolderFile.getPath());
System.out.println("uri:" + uri);
InputStream imgInput = null;
String base64 = "";
File imgFile = new File(imageFolderFile.getPath() + "/" + uri);
System.out.println(imgFile.exists());
try {
if (imgFile.exists()) {
imgInput = new FileInputStream(imgFile);
byte[] data = new byte[imgInput.available()];
imgInput.read(data);
base64 = Base64.encodeBase64String(data);
imgInput.close();
imgFile.delete();
}
} catch (Exception e) {
e.printStackTrace();
if (imgInput != null) {
try {
imgInput.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
String imgBase64 = "data:image/png;base64," + base64;
return imgBase64;
});
ByteArrayOutputStream out = new ByteArrayOutputStream();
XHTMLConverter.getInstance().convert(wordDocument, out, options);
out.close();
String content = new String(out.toByteArray());
return content;
}
/**
* excel2003转html.
* @param inStream 源文件输入流
* @return html 字符串
* @throws Exception e
*/
public String converExcel2003ToHtml(InputStream inStream) throws Exception {
//InputStream input=new FileInputStream(path+file);
HSSFWorkbook excelBook = new HSSFWorkbook(inStream);
String content = hssfToHtml(excelBook);
return content;
}
/**
* excel2007转html.
* @param inStream 源文件输入流
* @return html string
* @throws Exception e
*/
public String converExcel2007ToHtml(InputStream inStream) throws Exception {
HSSFWorkbook excelBook = new HSSFWorkbook();
XSSFWorkbook excelBook2007 = new XSSFWorkbook(inStream);
Transform xls = new Transform();
xls.transformXSSF(excelBook2007, excelBook);
String content = hssfToHtml(excelBook);
return content;
}
/**
* HSSFWorkbook 即.xls转换为html字符串.
* @param excelBook HSSFWorkbook
* @return html字符串
* @throws Exception e
*/
private String hssfToHtml(HSSFWorkbook excelBook) throws Exception {
ExcelToHtmlConverter excelToHtmlConverter = new ExcelToHtmlConverter(
DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument());
excelToHtmlConverter.processWorkbook(excelBook);
Document htmlDocument = excelToHtmlConverter.getDocument();
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
DOMSource domSource = new DOMSource(htmlDocument);
StreamResult streamResult = new StreamResult(outStream);
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);
outStream.close();
String content = new String(outStream.toByteArray());
return content;
}
/*<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.16</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>3.16</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.16</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>fr.opensagres.xdocreport</groupId>
<artifactId>fr.opensagres.poi.xwpf.converter.xhtml</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.11.3</version>
</dependency>*/
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/bhl123/spring-boot-ssm.git
git@gitee.com:bhl123/spring-boot-ssm.git
bhl123
spring-boot-ssm
spring-boot-ssm
master

搜索帮助