JAVA将word文档转换为html文件,并处理图片

方法很简单。

//filename  word文档路径
Document doc = new Document(filename);
//htmlname  html文件路径,SaveFormat.HTML  另存的文件类型
doc.save(htmlname,SaveFormat.HTML)
//这两步就已经将word文档转化为了一个html文件,如果文档里待图片,可能会报找不到类异常,根据报错下载相应的jar包即可。
//有图片的文档,转化为html后,会在html文件所在的目录生成相应的图片文件,html文件会引用这些文件,但相对路径可能会显示异常。
//需要重新处理转化后的html文件
//将html读取进来,值得一提的是,doc.save方法保存的html文件是utf-8编码,因此后续html文件的读写也需要用到utf-8
    BufferedReader reader = null;
    StringBuffer buff = new StringBuffer();
     try {
         reader = new BufferedReader(new InputStreamReader(new FileInputStream(htmlname),"UTF-8"));
         String line;
         while ((line = reader.readLine()) != null) {
             buff.append(line);
         }
         reader.close();
     } catch (Exception e) {
         e.printStackTrace();
     }
//替换图片的src值
	String htmlStr = buff.toString();
    Document parse = Jsoup.parseBodyFragment(htmlStr);
    //拿到html中所有的img节点
    Elements imgs = parse.getElementsByTag("img");
    if(imgs.size()>0){
        for(Element img : imgs){
        	//获取每个img节点的src元素
            String linkSrc = img.attr("src");
            //替换Src值为合适的路径
            linkSrc = "http://xxxxxx"+linkSrc;
            img.attr(tag, linkSrc);
        }
        String html = parse.html();
//输出修改后的html文件(同样也是utf-8编码)
        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream(htmlname), "UTF-8");
        BufferedWriter output = null;
        try {
            output = new BufferedWriter(outputStreamWriter);
            output.write(html);
        } catch (
                IOException e) {
            e.printStackTrace();
        } finally {
            try {
                output.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
//对应的jar包
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.*;
import com.aspose.words.Document;
import com.aspose.words.DocumentBuilder;
import com.aspose.words.SaveFormat;

你可能感兴趣的:(经验累积,java)