package 关于流的操作;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import java.util.UUID;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFPictureData;
import fr.opensagres.odfdom.converter.core.utils.IOUtils;
import fr.opensagres.poi.xwpf.converter.core.BasicURIResolver;
import fr.opensagres.poi.xwpf.converter.core.FileImageExtractor;
import fr.opensagres.poi.xwpf.converter.xhtml.XHTMLConverter;
import fr.opensagres.poi.xwpf.converter.xhtml.XHTMLOptions;
import fr.opensagres.xdocreport.document.json.JSONObject;
@WebServlet("/upload")
public class Upload extends HttpServlet {
/**
* 序列化
*/
private static final long serialVersionUID = 1L;
// String filepath = "D:\\temp\\temp\\";
// String imagePathStr = filepath+"upload\\image\\";
@SuppressWarnings("deprecation")
@Override
protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
res.setCharacterEncoding("UTF-8");
res.setContentType("application/json");
String ip = req.getScheme()+"://"+req.getServerName()+":"+req.getServerPort();
String webPath = req.getSession().getServletContext().getRealPath("upload/images/");
res.setHeader("Access-Control-Allow-Origin", ip);
res.setHeader("Access-Control-Allow-Headers", "X-Request-With,X_Requested_With");
JSONObject json = new JSONObject();
PrintWriter out = res.getWriter();
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(1024*1024*50);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
@SuppressWarnings("unchecked")
List<FileItem> items = upload.parseRequest(req);
items.forEach(item->{
item.getName();
try {
XWPFDocument document = new XWPFDocument(item.getInputStream());
XHTMLOptions options = XHTMLOptions.create();
// 存放图片的文件夹
File rootPath = new File(webPath);
if(!rootPath.exists()) {
rootPath.mkdirs();
}
List<XWPFPictureData> pictures = document.getAllPictures();
// options.setExtractor(new FileImageExtractor(rootPath));
// options.URIResolver(new BasicURIResolver("upload/image"));
XHTMLConverter xhtmlConverter = (XHTMLConverter) XHTMLConverter.getInstance();
xhtmlConverter.convert(document, baos, options);
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
String html = IOUtils.toString(bais, "UTF-8");
for(XWPFPictureData picture : pictures) {
String uuid = UUID.randomUUID().toString();
System.out.println(picture.getPackagePart());
String oldpicturesrc = "word/media/"+picture.getFileName();
try {
String newpicturesrc = "upload/images/"+uuid+".jpg";
html = html.replace(oldpicturesrc, newpicturesrc);
System.out.println(html);
FileOutputStream fos = new FileOutputStream(webPath+uuid+".jpg");
fos.write(picture.getData());
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println(html);
json.put("html", html);
out.print(json.toString());
} catch (IOException e) {
e.printStackTrace();
}
});
} catch (FileUploadException e) {
e.printStackTrace();
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
poi3.17实现word转html(可以作为流读取)
共456个文件
gif:120个
js:96个
png:89个
需积分: 48 61 下载量 113 浏览量
2018-12-05
17:06:18
上传
评论 1
收藏 29.7MB ZIP 举报
温馨提示
通过poi3.17将本地word转化为html页面,同时也可以读取流通过IOUtils将流转化为string,返回到前台。可以替代ueditor输入,通过ajax转化后返回在ueditor中显示。很棒的功能。
资源推荐
资源详情
资源评论
收起资源包目录
poi3.17实现word转html(可以作为流读取) (456个子文件)
Upload.class 7KB
Word.class 4KB
HTMLConvertString.class 3KB
WordConvertHTML.class 3KB
BetterHeaderFooterExample.class 3KB
TransientExample.class 2KB
UEditorConfigServlet.class 2KB
synchronize修饰方法.class 1KB
ExcelToHTML.class 1KB
HelloServlet.class 1KB
HelloFilter.class 1KB
ByteArrayOutputStreamLearn.class 1KB
StringReplaceMain.class 869B
Main.class 831B
HelloListener.class 693B
抛出的.class 605B
package-info.class 125B
package-info.class 124B
.classpath 588B
org.eclipse.wst.common.component 473B
org.eclipse.wst.jsdt.ui.superType.container 49B
layui.css 59KB
ueditor.css 44KB
ueditor.min.css 34KB
video-js.css 21KB
image.css 19KB
video.css 15KB
attachment.css 15KB
layer.css 14KB
video-js.min.css 11KB
layui.mobile.css 10KB
laydate.css 7KB
shCoreDefault.css 7KB
scrawl.css 4KB
codemirror.css 3KB
charts.css 3KB
background.css 2KB
emotion.css 2KB
dialogbase.css 2KB
music.css 2KB
edittable.css 1KB
code.css 1KB
template.css 1KB
webuploader.css 515B
help.css 395B
iframe.css 42B
iconfont.eot 39KB
vjs.eot 3KB
UEditorSnapscreen.exe 508KB
wface.gif 49KB
jxface2.gif 40KB
yface.gif 28KB
bface.gif 27KB
icons.gif 20KB
file-icons.gif 20KB
file-icons.gif 20KB
tface.gif 19KB
fface.gif 18KB
59.gif 10KB
22.gif 10KB
cface.gif 8KB
24.gif 8KB
13.gif 7KB
16.gif 7KB
39.gif 6KB
64.gif 6KB
63.gif 6KB
50.gif 6KB
loading-0.gif 6KB
4.gif 6KB
1.gif 5KB
42.gif 5KB
71.gif 5KB
21.gif 5KB
20.gif 5KB
29.gif 5KB
70.gif 4KB
5.gif 4KB
17.gif 4KB
27.gif 4KB
9.gif 4KB
44.gif 4KB
11.gif 4KB
8.gif 4KB
3.gif 4KB
23.gif 4KB
icons-all.gif 4KB
34.gif 4KB
41.gif 4KB
38.gif 4KB
65.gif 3KB
32.gif 3KB
45.gif 3KB
7.gif 3KB
12.gif 3KB
26.gif 3KB
60.gif 3KB
2.gif 3KB
40.gif 3KB
25.gif 3KB
共 456 条
- 1
- 2
- 3
- 4
- 5
资源评论
Code成立
- 粉丝: 11
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功