使用POI将doc文件转换为html

需要的jar包有:有一些是依赖包,可以使用maven下载

doc文件转换为html文件

package com.gsww.sxzz.controller.service;

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.jsoup.Jsoup;
import org.w3c.dom.Document;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.*;
import java.util.List;

/**
 * Created by Carey on 15-2-2.
 */
public class docTohtml {

    public static void main(String argv[]) {
        try {
            convert2Html("D:\\b.doc","D:\\1.html");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //输出html文件
    public static void writeFile(String content, String path) {
        FileOutputStream fos = null;
        BufferedWriter bw = null;
        org.jsoup.nodes.Document doc = Jsoup.parse(content);
        String styleOld=doc.getElementsByTag("style").html();
        //统一字体格式为宋体
        styleOld=styleOld.replaceAll("font-family:.+(?=;\\b)", "font-family:SimSun");

        doc.getElementsByTag("head").empty();
        doc.getElementsByTag("head").append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"></meta>");
        doc.getElementsByTag("head").append(" <style type=\"text/css\"></style>");
        doc.getElementsByTag("style").append(styleOld);
        /*正则表达式查询字体内容:font-family:.+(?=;\b)*/
        System.out.println(content);
        content=doc.html();
        content=content.replace("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">", "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"></meta>");
        try {
            File file = new File(path);
            fos = new FileOutputStream(file);
            bw = new BufferedWriter(new OutputStreamWriter(fos,"UTF-8"));
            bw.write(content);
        } catch (FileNotFoundException fnfe) {
            fnfe.printStackTrace();
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } finally {
            try {
                if (bw != null)
                    bw.close();
                if (fos != null)
                    fos.close();
            } catch (IOException ie) {
            }
        }
    }

    //word 转 html
    public static void convert2Html(String fileName, String outPutFile)
            throws TransformerException, IOException,
            ParserConfigurationException {

        HWPFDocument wordDocument = new HWPFDocument(new FileInputStream(fileName));//WordToHtmlUtils.loadDoc(new FileInputStream(inputFile));
         //兼容2007 以上版本
//        XSSFWorkbook  xssfwork=new XSSFWorkbook(new FileInputStream(fileName));
        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 "test/"+suggestedName;
            }
        } );
        wordToHtmlConverter.processDocument(wordDocument);

        //save pictures
        List pics=wordDocument.getPicturesTable().getAllPictures();
        if(pics!=null){
            for(int i=0;i<pics.size();i++){
                Picture pic = (Picture)pics.get(i);
                System.out.println();
                try {
                    pic.writeImageContent(new FileOutputStream("D:/test/"
                            + pic.suggestFullFileName()));
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }
            }
        }
        Document htmlDocument = wordToHtmlConverter.getDocument();

        ByteArrayOutputStream out = new ByteArrayOutputStream();
        DOMSource domSource = new DOMSource(htmlDocument);

        StreamResult streamResult = new StreamResult(out);

        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);
        out.close();
        writeFile(new String(out.toByteArray()), outPutFile);
    }
}

遇到的问题,当doc转换为html时不会将图像的线条给转换过来。只有在table表格中才可以转换为span标签。如果要作下滑线,可以放一个table的单元格只设定下边框就可以完美转换为html了。

将html转换为pdf

package com.gsww.sxzz.controller.service;

import com.lowagie.text.pdf.BaseFont;
import org.xhtmlrenderer.pdf.ITextFontResolver;
import org.xhtmlrenderer.pdf.ITextRenderer;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;

/**
 * Created by Carey on 15-2-2.
 */
public class htmlToPdf {

    public boolean convertHtmlToPdf(String inputFile, String outputFile)
             {

        try {
                OutputStream     os = new FileOutputStream(outputFile);
              ITextRenderer renderer = new ITextRenderer();
                String url = new File(inputFile).toURI().toURL().toString();
                renderer.setDocument(url);
                // 解决中文支持问题
                ITextFontResolver fontResolver = renderer.getFontResolver();
                /*fontResolver.addFont("C:\\Windows\\Fonts\\simsunb.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
                *///宋体文件的相对路径
                fontResolver.addFont("C:\\Windows\\Fonts\\simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);     

                renderer.getSharedContext().setBaseURL("file:/D:/");
                renderer.layout();
                renderer.createPDF(os);
                os.flush();
                os.close();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return true;
    }

     public   static  void  main(String [] args){
         htmlToPdf html2Pdf =new htmlToPdf();
         try {
             html2Pdf.convertHtmlToPdf("D:\\1.html","D:\\index.pdf");
         } catch (Exception e) {
             e.printStackTrace();
         }
     }
}
时间: 2024-10-11 21:18:53

使用POI将doc文件转换为html的相关文章

java将doc文件转换为pdf文件的三种方法

http://feifei.im/archives/93 —————————————————————————————————————————————— 项目要用到doc转pdf的功能,一番google之后总结出了三种方法(免费方案),于是一一试了一下,做个总结记录,下次要用直接查,省的忘了…… 方法1.poi读取doc + itext生成pdf (实现最方便,效果最差,跨平台) 方法2.jodconverter + openOffice (一般格式实现效果还行,复杂格式容易有错位,跨平台) 方法

java程序REF文件转DOC文件

本来是想将REF文件直接转换成html文件,但是由于乱码的问题没办法解决,所以选择了一个折中的办法,先将RTF转换成DOC的文档,再利用HWPFDocument类将DOC文件转换为html文件 1.下载OpenOffice安装在需要进行文书转换的电脑上,下载地址:http://rj.baidu.com/soft/detail/15989.html?ald 2.在对应程序中添加jar包,对应下载jar包百度云盘地址: 获取码: 或者说直接在网上搜索jodconverter-core-3.0-bet

android使用POI读写word doc文件

目录 1     读word doc文件 1.1     通过WordExtractor读文件 1.2     通过HWPFDocument读文件 2     写word doc文件 Apache poi的hwpf模块是专门用来对word doc文件进行读写操作的.在hwpf里面我们使用HWPFDocument来表示一个word doc文档.在HWPFDocument里面有这么几个概念: l  Range:它表示一个范围,这个范围可以是整个文档,也可以是里面的某一小节(Section),也可以是

java使用poi读取doc和docx文件

这几天在学习java io流的东西,有一个网友看到博客后问了一个问题,就是说他的doc文档为什么用我所说的方法死活就是乱码. 我一开始以为是他方法问题,结果自己试了之后发现和他的结果一样也是乱码. 于是在网上搜寻了一阵之后才发现原来doc文档和excel一样不能用普通的io流的方法来读取,而是也需要用poi,于是进行了一番尝试后,终于以正确的编码格式读取了这个doc文件. 在网上搜索的过程中发现doc和docx的读取方法是不一样的,于是顺带也学了一下docx文件的简单读取. 一.导包: doc文

使用POI读写word doc文件

Apache poi的hwpf模块是专门用来对word doc文件进行读写操作的.在hwpf里面我们使用HWPFDocument来表示一个word doc文档.在HWPFDocument里面有这么几个概念: l  Range:它表示一个范围,这个范围可以是整个文档,也可以是里面的某一小节(Section),也可以是某一个段落(Paragraph),还可以是拥有共同属性的一段文本(CharacterRun) . l  Section:word文档的一个小节,一个word文档可以由多个小节构成. l

【使用Itext处理PDF文档(新建PDF文件、修改PDF文件、PDF中插入图片、将PDF文件转换为图片)】

iText简介 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转化为PDF文件. iText的安装非常方便,下载iText.jar文件后,只需要在系统的CLASSPATH中加入iText.jar的路径,在程序中就可以使用iText类库了. 1.包的引用 1 import java.io.FileNotFoundException; 2 import java.i

JAVA利用poi获取world文件内容

本文主要简单介绍了利用poi包,读取world文件内容. 这个依然存在版本的问题,只能读取doc结尾的老版本文件. 话不多说,上代码: 1 import java.io.File; 2 import java.io.FileInputStream; 3 4 import org.apache.poi.hwpf.HWPFDocument; 5 import org.apache.poi.hwpf.usermodel.Range; 6 7 8 public class testdoc { 9 /**

15个最好的PDF转word的在线转换器,将PDF文件转换成doc文件

PDF是一种文件格式,包含文本,图像,数据等,这是独立于操作系统的文件类型.它是一个开放的标准,压缩,另一方面DOC文件和矢量图形是由微软文字处理文件.该文件格式将纯文本格式转换为格式化文档.它支持几乎所有的操作系统. PDF和DOC转换期权具体地址的用户想从PDF数据的完美格式编辑Word文档更新文本和图像传输的转换需要. 有无数的工具和服务提供在线执行用户的转换,在这篇文章中,我们已经编制了一份清单15最好的PDF到DOC转换器将帮助您将您的PDF文件,以在各种不同的格式,如xls,RTF,

通过POI读取word文件

POI读取word只能读取内容不能读取格式 tm-extractors-0.4.jar import java.io.FileInputStream; import org.textmining.text.extraction.WordExtractor; public class Test { public static void main(String[] args) { try { FileInputStream in = new FileInputStream("d:\\a.doc&qu