package com.javaniu.servlet; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.net.URLEncoder; import java.util.List; import javax.servlet.http.HttpServletResponse; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.FactoryConfigurationError; 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.hwpf.HWPFDocument; import org.apache.poi.hwpf.converter.PicturesManager; import org.apache.poi.hwpf.converter.WordToHtmlConverter; import org.apache.poi.hwpf.usermodel.Picture; import org.apache.poi.hwpf.usermodel.PictureType; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.commons.CommonsMultipartFile; import org.springframework.web.servlet.ModelAndView; import org.w3c.dom.Document; @Controller @RequestMapping({ "/demo" }) public class DemoController { private static final String path = "/data/www/demo.javaniu.com/doc2html/"; @RequestMapping(value = { "doc2html" }, method = { RequestMethod.GET }) public ModelAndView doc2html( @RequestParam(value = "file", required = true) final String file, HttpServletResponse response) throws Exception, FactoryConfigurationError { ModelAndView modelAndView = new ModelAndView("doc2html/doc2html"); File dir = new File(path); if (!dir.exists()) { dir.mkdirs(); } InputStream input = new FileInputStream(path + file); HWPFDocument wordDocument = new HWPFDocument(input); WordToHtmlConverter wordToHtmlConverter; wordToHtmlConverter = new WordToHtmlConverter(DocumentBuilderFactory .newInstance().newDocumentBuilder().newDocument()); wordToHtmlConverter.setPicturesManager(new PicturesManager() { public String savePicture(byte[] content, PictureType pictureType, String suggestedName, float widthInches, float heightInches) { return "http://demo.javaniu.com/doc2html/" + file + "_" + suggestedName; } }); wordToHtmlConverter.processDocument(wordDocument); List pics = wordDocument.getPicturesTable().getAllPictures(); if (pics != null) { for (int i = 0; i < pics.size(); i++) { Picture pic = (Picture) pics.get(i); try { pic.writeImageContent(new FileOutputStream(path + file + "_" + pic.suggestFullFileName())); } catch (FileNotFoundException e) { e.printStackTrace(); } } } Document htmlDocument = wordToHtmlConverter.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()); modelAndView.addObject("content", content); return modelAndView; } @RequestMapping(value = { "upload" }, method = { RequestMethod.GET }) public ModelAndView create() throws IOException { Doc doc = new Doc(); ModelAndView modelAndView = new ModelAndView("doc2html/upload"); modelAndView.addObject("doc", doc); return modelAndView; } @RequestMapping(value = { "upload" }, method = { RequestMethod.POST }) public void create(@ModelAttribute("doc") Doc doc, HttpServletResponse response) throws IOException { File dir = new File(path); if (!dir.exists()) { dir.mkdirs(); } CommonsMultipartFile file = doc.getFile(); String dst = path + "" + file.getOriginalFilename(); file.transferTo(new File(dst)); response.sendRedirect("/demo/doc2html.action?file=" + URLEncoder.encode(file.getOriginalFilename(), "utf-8")); } }
最近下载更多
maxLiu LV1
10月1日
微信网友_7161495321989120 LV1
9月10日
dapeng0011 LV15
7月18日
lironggang LV38
3月26日
aaalll LV1
2023年7月27日
sf8910611 LV1
2023年4月5日
快乐的程序员 LV25
2023年1月21日
myscbxh LV2
2022年11月13日
liu2022 LV14
2022年7月31日
ming_123_9715 LV23
2022年7月17日
最近浏览更多
maxLiu LV1
10月1日
微信网友_7161495321989120 LV1
9月10日
dapeng0011 LV15
7月18日
3334004690 LV10
6月24日
liuxing_aa
4月15日
暂无贡献等级
Suoge123 LV13
4月10日
lironggang LV38
3月26日
467277 LV13
3月26日
tokiiii LV1
2023年12月3日
lichengai LV7
2023年11月27日