利用POI实现Word和 Html互转(可以实现在线预览)_html/css_WEB-ITnose

WBOY
Release: 2016-06-24 11:27:41
Original
2345 people have browsed it

利用POI将Word转换为Html,以便在浏览器上预览

package com.vito.demo.test;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.InputStream;import java.util.List;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.commons.io.FileUtils;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.w3c.dom.Document;public class PoiWordToHtml { public static void main(String[] args) throws Throwable {  final String path = "G:\\doc\\";  final String file = "客户需求文档.doc";  InputStream input = new FileInputStream(path + file);  HWPFDocument wordDocument = new HWPFDocument(input);  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 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       + 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());  FileUtils.write(new File(path, "1.html"), content, "utf-8"); }}
Copy after login

相关参考链接:

JSP实现word文档的上传,在线预览,下载

Java+FlexPaper+swfTools仿文库文档在线阅读

将Html文本写入到Word文件

 public void htmlToWord2() throws Exception {         InputStream bodyIs = new FileInputStream("f:\\1.html");         InputStream cssIs = new FileInputStream("f:\\1.css");         String body = this.getContent(bodyIs);         String css = this.getContent(cssIs);         //拼一个标准的HTML格式文档         String content = "<html><head><style>" + css + "</style></head><body>" + body + "</body></html>";         InputStream is = new ByteArrayInputStream(content.getBytes("GBK"));         OutputStream os = new FileOutputStream("f:\\1.doc");         this.inputStreamToWord(is, os);      }            /**       * 把is写入到对应的word输出流os中       * 不考虑异常的捕获,直接抛出       * @param is       * @param os       * @throws IOException       */      private void inputStreamToWord(InputStream is, OutputStream os) throws IOException {         POIFSFileSystem fs = new POIFSFileSystem();         //对应于org.apache.poi.hdf.extractor.WordDocument         fs.createDocument(is, "WordDocument");         fs.writeFilesystem(os);         os.close();         is.close();      }            /**       * 把输入流里面的内容以UTF-8编码当文本取出。       * 不考虑异常,直接抛出       * @param ises       * @return       * @throws IOException       */      private String getContent(InputStream... ises) throws IOException {         if (ises != null) {            StringBuilder result = new StringBuilder();            BufferedReader br;            String line;            for (InputStream is : ises) {               br = new BufferedReader(new InputStreamReader(is, "UTF-8"));               while ((line=br.readLine()) != null) {                   result.append(line);               }            }            return result.toString();         }         return null;      }
Copy after login

 

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!