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;  
         }  
    } 

猜你喜欢

转载自www.cnblogs.com/chenlove/p/8858900.html