zoukankan      html  css  js  c++  java
  • java 之word转html

    jar包  链接: https://pan.baidu.com/s/13o2CZTwM-Igx6wcoyEu_ug 密码: n95q

    package com.bistu.service;

    import java.io.BufferedReader;  
    import java.io.BufferedWriter;  
    import java.io.ByteArrayInputStream;  
    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.InputStreamReader;  
    import java.io.OutputStream;  
    import java.io.OutputStreamWriter;  
    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.model.PicturesTable;  
    import org.apache.poi.hwpf.usermodel.CharacterRun;  
    import org.apache.poi.hwpf.usermodel.Paragraph;  
    import org.apache.poi.hwpf.usermodel.Picture;  
    import org.apache.poi.hwpf.usermodel.PictureType;  
    import org.apache.poi.hwpf.usermodel.Range;  
    import org.apache.poi.hwpf.usermodel.Table;  
    import org.apache.poi.hwpf.usermodel.TableCell;  
    import org.apache.poi.hwpf.usermodel.TableIterator;  
    import org.apache.poi.hwpf.usermodel.TableRow;  
    import org.apache.poi.poifs.filesystem.POIFSFileSystem;  
    import org.w3c.dom.Document;  
     
    @SuppressWarnings("unused")
    public class aaa {  
        public static void main(String[] args) throws Throwable {  
            final String path = "D:\";  
              final String file = "33.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.writeStringToFile(new File(path, "1.html"), content, "utf-8");  
             }   
          
            public void htmlToWord2() throws Exception {  
                InputStream bodyIs = new FileInputStream("D:\1.html");  
                InputStream cssIs = new FileInputStream("D:\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("D:\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;  
             }  
        } 

  • 相关阅读:
    Maven搭建Spring+Struts2+Hibernate项目详解
    Missing artifact com.sun:tools:jar:1.5.0
    post和get的区别?
    $(document).ready(function(){}),$().ready(function(){})和$(function(){})三个有区别么
    Spring配置dataSource的三种方式 数据库连接池
    关于sqlSessionTemplate
    sql中between and 用法
    用Java自定义一个定时器
    Tomcat unable to start within 45 seconds.
    如果 date_field = TRUNC(date_field) 就说明时分秒为0(也就是不包含),否则就包含时分秒
  • 原文地址:https://www.cnblogs.com/chenlove/p/8858900.html
Copyright © 2011-2022 走看看