博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jsoup将外部样式修改为内嵌样式
阅读量:5977 次
发布时间:2019-06-20

本文共 4078 字,大约阅读时间需要 13 分钟。

  hot3.png

 

 

public static String docToHtml(String basePath, String outImgPath,String outImgFolder, String fileName) throws TransformerException,IOException, ParserConfigurationException {

        final String url = basePath +"wordToHtml/"+outImgFolder;
        System.out.println(url);
        HWPFDocument wordDocument = new HWPFDocument(new FileInputStream(
                fileName));// WordToHtmlUtils.loadDoc(new
                            // FileInputStream(inputFile));
        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) {
                System.out.println();
                return url + suggestedName;
            }
        });
        wordToHtmlConverter.processDocument(wordDocument);
        // save pictures
        List<Picture> pics = wordDocument.getPicturesTable().getAllPictures();
        if (pics != null) {
            File imgFile = new File(outImgPath);
            /** "I:/tomcat/apache-tomcat-7.0.62-windows-x64/apache-tomcat-7.0.62/webapps/ZYFP/wordImg" **/
            if (!imgFile.exists()) {
                imgFile.mkdirs();
            }
            for (int i = 0; i < pics.size(); i++) {
                Picture pic = (Picture) pics.get(i);
                try {
                    /**
                     * "I:/tomcat/apache-tomcat-7.0.62-windows-x64/apache-tomcat-7.0.62/webapps/ZYFP/wordImg/"
                     * + pic.suggestFullFileName()
                     **/
                    pic.writeImageContent(new FileOutputStream(outImgPath+ 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, "gb2312");
        serializer.setOutputProperty(OutputKeys.INDENT, "yes");
        serializer.setOutputProperty(OutputKeys.METHOD, "html");
        serializer.transform(domSource, streamResult);
        out.close();
        byte[] lens = out.toByteArray();
        String html = new String(lens, "gb2312");
        return html;
    }

public static String docsToHtml(String basePath, String fileUrl) throws IOException,TransformerException, ParserConfigurationException {

        String data = null;
        String outImgPath = "I:/tomcat/apache-tomcat-7.0.62-windows-x64/apache-tomcat-7.0.62/webapps/ZYFP/wordToHtml/image/";
        String outImgFolder = "image/";
        String outHtmlPath = "I:/tomcat/apache-tomcat-7.0.62-windows-x64/apache-tomcat-7.0.62/webapps/ZYFP/wordToHtml/docx.html";
        
        File file = new File(fileUrl);
        if (!file.exists()) {
            return "文件不存在";
        } else {
            if (file.getName().endsWith(".docx")|| file.getName().endsWith(".DOCX")) {
                // 2007版本
                data = docxToHtml(basePath,outImgPath,outHtmlPath,fileUrl);
            } else {
                // 2003版本
                data = docToHtml(basePath, outImgPath, outImgFolder, fileUrl);
            }

        }

        return data;
    }

public static Map<String,String> getHtml_Css(String basePath,String filePath) {

        String txt = "";
        try {
            txt = ReqUtils.docsToHtml(basePath, filePath);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (TransformerException e) {
            e.printStackTrace();
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        }
        org.jsoup.nodes.Document doc = Jsoup.parse(txt);
        String[] styles = doc.head().select("style").html().split("\r\n");
        Map<String,String> css = new HashMap<String,String>();
        for(String style:styles)
        {
            String[] kv = style.split("\\{|\\}");
            css.put(kv[0], kv[1]);
        }
        return css;
    }

 

public static String getHtml_LineStyle(String basePath,String filePath) {

        Map<String,String> css = getHtml_Css(basePath,filePath);
        String txt = "";
        try {
            txt = ReqUtils.docsToHtml(basePath, filePath);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (TransformerException e) {
            e.printStackTrace();
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        }
        org.jsoup.nodes.Document doc = Jsoup.parse(txt);
        Element body = doc.body();
        for(String key:css.keySet())
        {
            body.select(key).attr("style", css.get(key)).outerHtml();
        }
        return body.html();
    }

转载于:https://my.oschina.net/body/blog/725521

你可能感兴趣的文章
基本安装lnmp环境
查看>>
yum源资料汇总
查看>>
7、MTC与MTV,http请求介绍
查看>>
logstash消费阿里云kafka消息
查看>>
unix 环境高级编程
查看>>
MAXIMO 快速查找实现
查看>>
Oracle——条件控制语句
查看>>
day-6 and day-7:面向对象
查看>>
CSU Double Shortest Paths 湖南省第十届省赛
查看>>
webgl像机世界
查看>>
php正则怎么使用(最全最细致)
查看>>
javascript数学运算符
查看>>
LC.155. Min Stack(非优化,两个stack 同步 + -)
查看>>
交互设计[3]--点石成金
查看>>
SCCM TP4部署Office2013
查看>>
redis主从配置<转>
查看>>
bootloader功能介绍/时钟初始化设置/串口工作原理/内存工作原理/NandFlash工作原理...
查看>>
利用console控制台调试php代码
查看>>
讲解sed用法入门帖子
查看>>
Linux 内核已支持苹果
查看>>