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

java 之word转html的更多相关文章

  1. java 读写word java 动态写入 模板文件

    import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import ja ...

  2. java导出word的6种方式(复制来的文章)

    来自: http://www.cnblogs.com/lcngu/p/5247179.html 最近做的项目,需要将一些信息导出到word中.在网上找了好多解决方案,现在将这几天的总结分享一下. 目前 ...

  3. Java 实现word 中写入文字图片的解决方案

    JAVA生成WORD文件的方法目前有以下两种方式: 一种是jacob 但是局限于windows平台 往往许多JAVA程序运行于其他操作系统 在此不讨论该方案; 一种是poi但是他的excel处理很程序 ...

  4. java操作word,excel,pdf

    在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下java对word.excel.pdf文件的读取.本篇博客只是讲解简单应 ...

  5. Java解析word文档

    背景 在互联网教育行业,做内容相关的项目经常碰到的一个问题就是如何解析word文档. 因为系统如果无法智能的解析word,那么就只能通过其他方式手动录入word内容,效率低下,而且人工成本和录入出错率 ...

  6. [Java] Java读取Word文档

    前言 最近需要做一些NLP 方面的工作,使用的是Java,在此总结一下使用Java读取Word(.doc)格式文件的方法. Apache基金会非常厉害,开源工具包POI就可以处理微软家的文档,甚至包括 ...

  7. Java解析word,获取文档中图片位置

    前言(背景介绍): Apache POI是Apache基金会下一个开源的项目,用来处理office系列的文档,能够创建和解析word.excel.ppt格式的文档. 其中对word文档的处理有两个技术 ...

  8. Java读取word中表格

    因为要新建一个站,公司要把word表格的部分行列存到数据库中.之前用java操作过excel,本来打算用java从word表格中读取数据,再存到数据库中,结果因为权限不够,无法访问公司要写的那个数据库 ...

  9. java操作office和pdf文件java读取word,excel和pdf文档内容

    在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下Java对word.excel.pdf文件的读取.本篇博客只是讲解简单应 ...

  10. java生成word的几种方案

    http://blog.sina.com.cn/s/blog_a5e968370101crtl.html 1. Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建 ...

随机推荐

  1. Hpple -- 一个 HTML 解析工具

    在开发中,大部分会使用 JSON 进行数据解析,偶尔会用到 HTML. 使用 Objective-C 解析 HTML 或者 XML,系统自带有两种方式一个是通过 libxml,一个是通过 NSXMLP ...

  2. Nginx 七层反向代理

    目录 1.代理 2.正向代理 3.反向代理 4.Nginx 反向代理 5.Nginx 反向代理相关指令介绍 ①.listen ②.server_name ③.location ④.proxy_pass ...

  3. 自定义 directive pagination

    学习angular过程中,对directive 不是很了解,很有必要自己写一个,以便知道它的各方面的处理方式. directive 中 scope 与 controller 交互,有三种定义策略 &q ...

  4. 「JSOI2010」挖宝藏

    「JSOI2010」挖宝藏 传送门 由于题目中说道挖一个位置的前提是挖掉它上面的三个,以此类推可以发现,挖掉一个点就需要挖掉这个点往上的整个倒三角,那么也就会映射到 \(x\) 轴上的一段区间(可以发 ...

  5. Python开发:Python运算符

    运算符 1.算数运算: 运算符 描述 实例 + 加 - 两个对象相加 a + b 输出结果 30 - 减 - 得到负数或是一个数减去另一个数 a - b 输出结果 -10 * 乘 - 两个数相乘或是返 ...

  6. 牛顿迭代法--求任意数的开n次方

    牛顿迭代法是求开n次方近似解的一种方法,本文参考. 引言 假如\(x^n = m\),我们需要求x的近似值. 我们设\(f(x) = x^n - m\), 那么也就是求该函数f(x)=0时与x轴的交点 ...

  7. 【原】postman设置环境变量和全局变量

    一:设置环境变量 1. postman通过变换环境变量来快速变换环境地址. 2. 现可以将localhost:80信息添加至环境 3. 点击确定后,在首页可看到已添加的环境变量信息及设置的变量信息: ...

  8. minst.npz下载

    keras.datasets.mnist数据集下载地址 下载地址:链接: https://pan.baidu.com/s/1Rr-aHsIIEQx2z6W3qvMmhQ 提取码: 8w15

  9. 记录6--Java栈堆

    class Person { int age; } public class LearnHeap { public static void main(String args[]){ int a=18; ...

  10. [经验] Java 服务端 和 C# 客户端 实现 Socket 通信

    由于项目需要, 我需要通过 Java 开发的服务端对 C# 作为脚本语言开发的 unity 项目实现控制 话不多说, 直接上代码 首先, 我们先来构建服务端的代码, 服务端我们使用 Java 语言 i ...