精华内容
下载资源
问答
  • 2019-01-29 13:29:55

    图片在转换结果中,会以Base64编码的方式编码。

    前置条件:安装pydocx

    pip install pydocx

    from pydocx import PyDocX
    html = PyDocX.to_html("test.docx")
    f = open("test.html", 'w', encoding="utf-8")
    f.write(html)
    f.close()

    通过网页上传word文档,只接收docx

    <form method="post" enctype="multipart/form-data">
    <input type="file" name="file" accept="application/vnd.openxmlformats-officedocument.wordprocessingml.document">
    </form>

    windows下,将doc转为docx

    pip3 install pypiwin32

    from win32com import client
    word = client.Dispatch("Word.Application")
    doc = word.Documents.Open("D:\\***\\**.doc") //绝对路径 doc文件
    doc.SaveAs("D:\\***\\**.docx",16) //保存的docx 文件,绝对路径
    doc.Close()
    word.Quit()
    更多相关内容
  • 使用前提是:电脑已经安装了word,这里用到的是word组件Word.Application。 代码如下:<HTML> <HEAD> <TITLE>WalkingPoison’s Word-to-HTML sample</TITLE> [removed] function saveword() {...
  • Word转成HTML

    2018-04-18 10:00:43
    Word转成HTML,可支持03和07版,已封装为工具类,直接调用即可,jar包齐全
  • 利用POI将word转换成html实现在线阅读 利用POI将word转换成html实现在线阅读 利用POI将word转换成html实现在线阅读 利用POI将word转换成html实现在线阅读
  • 使用 koa 写了一个小网站,上传 word 文档即可将 word 转成 html,并且有可编辑 html。编辑好了之后只需要点击上传就能将 html 生成访问链接
  • word转换成html工具

    2012-11-03 11:39:22
    转换时请先备份WORD文件,转换时会把整个文件夹及子文件夹内的全部WORD转成HTM文件。 Word 转换 Html Word 转换 Html Word 转换 Html 注意:转换时会删除原文件,一定要备份原文件 注意:转换时会删除...
  • java实现word转换成html实现word预览
  • 主要为大家详细介绍了Java使用poi将word转换为html的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • poi将word里面的内容转换成html、包括word里面字体的大小、表格的处理、还有图片、段落等等...
  • #coding=utf-8#文件名:#BatchConverWords2Html.py#说明:#批量将一个文件夹下的所有.doc/.docx文件转为.html文件,需要安装对应的Win32模块#调用方式:进入源程序目录,命令:pythonBatchConverWords2...

    #coding=utf-8

    #文件名:

    #BatchConverWords2Html.py

    #说明:

    #批量将一个文件夹下的所有.doc/.docx文件转为.html文件,需要安装对应的Win32模块

    #调用方式:进入源程序目录,命令:pythonBatchConverWords2Html.pyRootDir

    fromWin32comimportclientaSWc

    importos

    Word=wc.Dispatch('Word.Application')

    defWordsToHtml(dir):

    Forpath,SUbdirs,filesinos.walk(dir):

    ForWordFileinfiles:

    WordFullName=os.path.join(path,WordFile)

    #PRint"Word:"+WordFullName

    doc=Word.Documents.Open(WordFullName)

    WordFile2=unicode(WordFile,"gbk")

    dotIndex=WordFile2.rfind(".")

    if(dotIndex==-1):

    PRint"********************ERROR:未取得后缀名!"

    fileSuffix=WordFile2[(dotIndex+1):]

    if(fileSuffix=="doc"orfileSuffix=="docx"):

    fileName=WordFile2[:dotIndex]

    htmlName=fileName+".html"

    htmlFullName=os.path.join(unicode(path,"gbk"),htmlName)

    #htmlFullName=unicode(path,"gbk")+"\"+htmlName

    PRint"generatehtml:"+htmlFullName

    doc.SaveAs(htmlFullName,10)

    doc.Close()

    Word.QUIt()

    PRint""

    PRint"Finished!"

    if__name__=='__mAIn__':

    importsys

    iflen(sys.argv)!=2:

    PRint"Usage:pythonfuncName.pyrootdir"

    sys.exit(100)

    WordsToHtml(sys.argv[1])运行结果就是在rootdir目录下的所有Word文档转为简洁版的html网页文件,生成的文件存在原Word同目录下,生成 xxx.files 文件夹。

    展开全文
  • 该功能支持word在线编辑,word转换为htmlhtml转换为wordword在线编辑前后的内容对比,并支持将对比后的内容生成word,删除的内容标红,新增的内容标绿
  • 说明:该示例代码用于完成将android设备本地存储word文件利用调用POI库转换为html文件,将其利用webView进行显示并存储到设备存储卡中。 博客文章:http://mp.blog.csdn.net/postedit/79192623
  • 将2003/2007版本word转成html进行浏览
  • 比如文件下载,可以使用这个Js来实现,不用单独再去传word版本,还有就是有些文件还找不到word版,就可以用这个来实现
  • WORD转成html

    2011-01-22 21:47:46
    WORD转成html 把txt文件几docx文件转成html页面程序大家可以看看
  • 主要介绍了php实现将HTML页面转换成word并且保存的方法,结合实例形式分析了PHPWord工具的功能与使用方法,具有一定参考借鉴价值,需要的朋友可以参考下
  • 批量的把html 文件转换成word,不需要电脑上有word软件!并且支持本地图片,html链接的图片必须在本地,可以把图片转换到word里!
  • js把word转成html

    2009-06-01 10:22:34
    js把word转成html js把word转成html js把word转成html js把word转成html
  • java poi 将word转成html,ppt转图片

    万次阅读 2015-12-27 21:54:28
    前几日在做项目时需要将ppt转化为图片,将word文档输出的功能。在百度搜了些资料,整理了一下,借用前辈们的经验整合了这两个小小的类   文章原出两处:http://vtrtbb.iteye.com/blog/601267  ...

    Java 容易被忽视的poi

    Poi提取技术是java中一大亮点。前几日在做项目时需要将ppt转化为图片,将word文档输出的功能。在百度搜了些资料,整理了一下,借用前辈们的经验整合了这两个小小的类

     

    文章原出两处:http://vtrtbb.iteye.com/blog/601267

                  http://pengenjing.iteye.com/blog/1901225

     

    来看下面的吧word文档转化为html格式的代码先:

     

    package com.hsp.util;

     

    import java.io.BufferedWriter;  

    import java.io.File;  

    import java.io.FileInputStream;  

    import java.io.FileNotFoundException;  

    import java.io.FileOutputStream;  

    import java.io.IOException;  

    import java.io.OutputStream;  

    import java.io.OutputStreamWriter;  

    import java.util.List;  

      

    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 org.apache.commons.io.output.ByteArrayOutputStream;  

    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.w3c.dom.Document;  

      

    public class Word2Html {  

      

        /*newrealpath是指word文档的原路径,realpath是指word文档的新路径,newsid是指该word文档存储在数据库中的唯一id值,用户没上传一个word文档,后台会根据生成的唯一id值创建一个.html文件,就是newsid.html*/

     

        public static boolean changeWord2html(String newrealpath,String realpath,int newsid) {  

            boolean b=true; 

         try {  

                convert2Html(newrealpath,realpath+"//"+newsid+".html");  

            } catch (Exception e) {  

                e.printStackTrace();

                b=false;

            }  

            return b;

        }  

      

    //该方法是将文本写入路径之中

        public static void writeFile(String content, String path) {  

            FileOutputStream fos = null;  

            BufferedWriter bw = null;  

            try {  

                File file = new File(path);  

                fos = new FileOutputStream(file);  

                bw = new BufferedWriter(new OutputStreamWriter(fos,"GB2312"));  

                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) {  

                }  

            }  

        }  

      

        public static void convert2Html(String fileName, String outPutFile)  

                throws TransformerException, IOException,  

                ParserConfigurationException {  

            HWPFDocument wordDocument = new HWPFDocument(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);  

            //保存图片  

            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("E:/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, "GB2312");  

            serializer.setOutputProperty(OutputKeys.INDENT, "yes");  

            serializer.setOutputProperty(OutputKeys.METHOD, "html");  

            serializer.transform(domSource, streamResult);  

            out.close();  

            writeFile(new String(out.toByteArray()), outPutFile); //调用writeFile类 

        }  

    }  

     

     

    下面的我们来看看ppt转化为图片格式的代码:

     

     

    package com.hsp.util;

     

    import java.awt.Dimension;

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.FileNotFoundException;

    import java.io.FileOutputStream;

    import java.io.IOException;

    import java.util.ArrayList;

    import java.util.List;

     

    import java.awt.Color;

    import java.awt.Dimension;

    import java.awt.Graphics2D;

    import java.awt.geom.Rectangle2D;

    import java.awt.image.BufferedImage;

     

    import org.apache.poi.hslf.model.TextRun;

    import org.apache.poi.hslf.record.Slide;

    import org.apache.poi.hslf.usermodel.RichTextRun;

    import org.apache.poi.hslf.usermodel.SlideShow;

     

    public class PPTtoImage {

    /*pptload是指ppt的原路径,newfullnewpath是指ppt的新路径,newsid是指该ppt存储在数据库中的唯一id值,用户没上传一个ppt,后台会根据生成的唯一id值创建一个唯一的文件夹,该文件夹内存放该ppt转化的图片*/

     public static List changppttoimage(String pptload,String newfullnewpath,int newsid){

      // 读入PPT文件

      File file = new File(pptload);

      return doPPTtoImage(file,newfullnewpath,newsid);

     }

     public static List doPPTtoImage(File file,String newfullnewpath,int newsid){

      /*boolean isppt = checkFile(file);

      if (!isppt) {

       System.out.println("你指定的文件不是ppt文档!");

       return false;

      }*/

      List al=new ArrayList();

      try {

     

       FileInputStream is = new FileInputStream(file);

       SlideShow ppt = new SlideShow(is);

       is.close();

       Dimension pgsize = ppt.getPageSize();

       org.apache.poi.hslf.model.Slide[] slide = ppt.getSlides();

       for (int i = 0; i < slide.length; i++) {

        //System.out.print("" + i + "页。");

        if(slide[i].getNotesSheet()!=null&&slide[i].getNotesSheet().getTextRuns()!=null){

         //获取第一个备注

         //System.out.println("备注:" + slide[i].getNotesSheet().getTextRuns()[0].getText());

        }

        TextRun[] truns = slide[i].getTextRuns();

        for (int k = 0; k < truns.length; k++) {

         RichTextRun[] rtruns = truns[k].getRichTextRuns();

         for (int l = 0; l < rtruns.length; l++) {

          rtruns[l].setFontIndex(1);

          rtruns[l].setFontName("宋体");

          // 获取文本列表

          //System.out.println(rtruns[l].getText());   

         }

        }

        BufferedImage img = new BufferedImage(pgsize.width,

          pgsize.height, BufferedImage.TYPE_INT_RGB);

        Graphics2D graphics = img.createGraphics();

        graphics.setPaint(Color.white);

        graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width,

          pgsize.height));

        slide[i].draw(graphics);

        // 这里设置图片的存放路径和图片的格式(jpeg,png,bmp等等),注意生成文件路径

        File f=new File(newfullnewpath);

    //判断该文件夹是否存在,如果不存在,这创建一个新的文件夹

    if(!f.isDirectory())

    {

    f.mkdirs();

    }

        FileOutputStream out = new FileOutputStream(newfullnewpath+"pict_"+(i + 1) + ".jpeg");

        javax.imageio.ImageIO.write(img, "jpeg", out);

        al.add("pict_"+(i + 1) + ".jpeg");

        out.close();

       }

       /*System.out.println("ok");

       return true;*/

      } catch (FileNotFoundException e) {

       System.out.println(e);

      } catch (IOException e) {

       e.printStackTrace();

      }

      return al;

     }

     

     // function 检查文件是否为PPT

     public static boolean checkFile(File file) {

      boolean isppt = false;

      String filename = file.getName();

      String suffixname = null;

      if (filename != null && filename.indexOf(".") != -1) {

       suffixname = filename.substring(filename.indexOf("."));

       if (suffixname.equals(".ppt")) {

        isppt = true;

       }

       return isppt;

      } else {

       return isppt;

      }

     }

    }

     

    经测试是可行的,在小编这里是可以运行成功的,不过,上面只是简单的两个类而已,在项目中,还要用struts2去限定转化文件的大小等等。

     

     

     

     

     

     

     

    展开全文
  • 完美解决doc、docx格式word转换为Html

    热门讨论 2015-09-27 16:57:53
    由于项目需要,需要在线预览文档,所以就想转换为htmL格式; 此项目为maven项目,引入的包可能需要一些时间; maven项目转换为eclipse项目命令是:mvn eclipse:eclipse,然后导入到eclipse; jar引入完成后,绝对100...
  • word中的目录结构树提取出来放到html的左侧并生成相应的树目录,在html中点击树目录时整个页面可以跳到对应的位置
  • word文档转换成html文档-保留word中的图片样式等信息。还原度99%。
  • Java实现word转HTML

    千次阅读 2019-12-02 22:34:38
    Java word转html主要是为了word的在线浏览。不过转换可用性不是很好。我们先开始开发吧 第一步:引用Maven <!-- Word转HTML start --> <dependency> <groupId>org.apache.poi</...

    Java word转html主要是为了word的在线浏览。不过转换可用性不是很好。我们先开始开发吧

    第一步:引用Maven

    
    		<!-- Word转HTML start -->
    		<dependency>
    			<groupId>org.apache.poi</groupId>
    			<artifactId>poi-scratchpad</artifactId>
    			<version>3.14</version>
    		</dependency>
    
    		<dependency>
    			<groupId>org.apache.poi</groupId>
    			<artifactId>poi-ooxml</artifactId>
    			<version>3.14</version>
    		</dependency>
    
    		<dependency>
    			<groupId>fr.opensagres.xdocreport</groupId>
    			<artifactId>xdocreport</artifactId>
    			<version>1.0.6</version>
    		</dependency>
    
    		<dependency>
    			<groupId>org.apache.poi</groupId>
    			<artifactId>poi-ooxml-schemas</artifactId>
    			<version>3.14</version>
    		</dependency>
    
    		<dependency>
    			<groupId>org.apache.poi</groupId>
    			<artifactId>ooxml-schemas</artifactId>
    			<version>1.3</version>
    		</dependency>
    
    		<dependency>
    			<groupId>org.jsoup</groupId>
    			<artifactId>jsoup</artifactId>
    			<version>1.11.3</version>
    		</dependency>
    		<!-- Word转HTML end -->
    

    第二步:java实现代码

    原始版本;

    package com.mmxpw.mmw.file.view.word;
    
    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.PictureType;
    import org.apache.poi.xwpf.converter.core.BasicURIResolver;
    import org.apache.poi.xwpf.converter.core.FileImageExtractor;
    import org.apache.poi.xwpf.converter.xhtml.XHTMLConverter;
    import org.apache.poi.xwpf.converter.xhtml.XHTMLOptions;
    import org.apache.poi.xwpf.usermodel.XWPFDocument;
    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.*;
    
    public class WordToHtml {
    
        /**
         * 将word2003转换为html文件
         *
         * @param wordPath word文件路径
         * @param wordName word文件名称无后缀
         * @param suffix   word文件后缀
         * @param htmlPath html存储地址
         * @throws IOException
         * @throws TransformerException
         * @throws ParserConfigurationException
         */
        public static String Word2003ToHtml(String wordPath, String wordName, String suffix, String htmlPath)
                throws IOException, TransformerException, ParserConfigurationException {
            String htmlName = wordName + ".html";
            final String imagePath = htmlPath + "image" + File.separator;
            // 判断html文件是否存在
            File htmlFile = new File(htmlPath + htmlName);
            if (htmlFile.exists()) {
                return htmlFile.getAbsolutePath();
            }
            // 原word文档
            final String file = wordPath + File.separator + wordName + suffix;
            InputStream input = new FileInputStream(new File(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) {
                    File imgPath = new File(imagePath);
                    if (!imgPath.exists()) {// 图片目录不存在则创建
                        imgPath.mkdirs();
                    }
                    File file = new File(imagePath + suggestedName);
                    try {
                        OutputStream os = new FileOutputStream(file);
                        os.write(content);
                        os.close();
                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    // 图片在html文件上的路径 相对路径
                    return "image/" + suggestedName;
                }
            });
            // 解析word文档
            wordToHtmlConverter.processDocument(wordDocument);
            Document htmlDocument = wordToHtmlConverter.getDocument();
            // 生成html文件上级文件夹
            File folder = new File(htmlPath);
            if (!folder.exists()) {
                folder.mkdirs();
            }
            OutputStream outStream = new FileOutputStream(htmlFile);
            DOMSource domSource = new DOMSource(htmlDocument);
            StreamResult streamResult = new StreamResult(outStream);
            TransformerFactory factory = TransformerFactory.newInstance();
            Transformer serializer = factory.newTransformer();
            serializer.setOutputProperty(OutputKeys.ENCODING, "utf-8");
            serializer.setOutputProperty(OutputKeys.INDENT, "yes");
            serializer.setOutputProperty(OutputKeys.METHOD, "html");
            serializer.transform(domSource, streamResult);
            return htmlFile.getAbsolutePath();
        }
        /**
         *
         * 2007版本word转换成html
         *
         * @param wordPath  word文件路径
         * @param wordName word文件名称无后缀
         * @param suffix   word文件后缀
         * @param htmlPath html存储地址
         * @return
         * @throws IOException
         */
        public static String Word2007ToHtml(String wordPath, String wordName, String suffix, String htmlPath)
                throws IOException {
            String htmlName = wordName + ".html";
            String imagePath = htmlPath + "image" + File.separator;
            // 判断html文件是否存在
            File htmlFile = new File(htmlPath + htmlName);
            if (htmlFile.exists()) {
                return htmlFile.getAbsolutePath();
            }
            // word文件
            File wordFile = new File(wordPath + File.separator + wordName + suffix);
            // 1) 加载word文档生成 XWPFDocument对象
            InputStream in = new FileInputStream(wordFile);
            XWPFDocument document = new XWPFDocument(in);
            // 2) 解析 XHTML配置 (这里设置IURIResolver来设置图片存放的目录)
            File imgFolder = new File(imagePath);
            XHTMLOptions options = XHTMLOptions.create();
            options.setExtractor(new FileImageExtractor(imgFolder));
            // html中图片的路径 相对路径
            options.URIResolver(new BasicURIResolver("image"));
            options.setIgnoreStylesIfUnused(false);
            options.setFragment(true);
            // 3) 将 XWPFDocument转换成XHTML
            // 生成html文件上级文件夹
            File folder = new File(htmlPath);
            if (!folder.exists()) {
                folder.mkdirs();
            }
            OutputStream out = new FileOutputStream(htmlFile);
            XHTMLConverter.getInstance().convert(document, out, options);
            return htmlFile.getAbsolutePath();
        }
    
        public static void main(String[] args) {
            try {
                //Word2003ToHtml("E:\\templates", "2019-11-26", ".doc", "E://templates/");
                Word2007ToHtml("E:\\templates", "OnLineWord", ".doc", "E://templates/");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
    
    }
    

    benr本人业务定制版本:

    package com.mmxpw.mmw.file.view.word;
    
    import org.apache.commons.fileupload.FileItem;
    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.PictureType;
    import org.apache.poi.xwpf.converter.core.BasicURIResolver;
    import org.apache.poi.xwpf.converter.core.FileImageExtractor;
    import org.apache.poi.xwpf.converter.xhtml.XHTMLConverter;
    import org.apache.poi.xwpf.converter.xhtml.XHTMLOptions;
    import org.apache.poi.xwpf.usermodel.XWPFDocument;
    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.ArrayList;
    import java.util.List;
    
    /**
     * @Class WordToHtmlNew
     * @Version 1.0
     * @Date 创建时间:2019-12-02 09:29
     * @Direction 类说明   传入文件,自动识别2003版本或者07版本,然后解析成HTML,且自动解析里面的图片,然后对图片做本地化存储,然后返回HTML
     */
    public class WordToHtmlNew {
    
        public final static List<String> FILE_TYPE = new ArrayList<>() ;
    
        static{
            FILE_TYPE.add( "doc" ) ;
            FILE_TYPE.add( "docx" ) ;
        }
    
        /***
         * 文件格式处理
         * @param fileItem
         * @return
         * @throws Exception
         */
        public static boolean fileTypeValidate( File fileItem ) throws Exception{
            String[] namePix = fileItem.getName().split("\\u002E");
            String suffix = namePix[namePix.length-1] ;
            if( !FILE_TYPE.contains( suffix )  ){
                throw new Exception( "您导入的文件格式错误,请导入word类型的文件." ) ;
            }else{
                return true ;
            }
        }
    
        /****
         * 判断文档的类型 本方法判断的是是否是新版
         * @param fileItem
         * @return
         */
        public static boolean isDocx( File fileItem ){
            String[] namePix = fileItem.getName().split("\\u002E");
            String suffix = namePix[namePix.length-1] ;
            if( suffix.toLowerCase().equals( "docx" )){
                return true ;
            }else{
                return false ;
            }
        }
    
    
        /****
         * 自动识别版本
         * 自动生成word内部的图片
         * 自动过滤其他的类型文件
         * 自动添加不通模块的图片前缀
         * @param file
         * @param iamgePrefix  在file的同级创建文件夹-image 提取word内部图片前缀为传入值:prefix
         * @param accessPath   html访问路径的url为:accessPath
         * @return
         */
        public static String WordAutoToHtml( File file , String iamgePrefix , String accessPath ) throws Exception {
            if( file == null ){
                throw new Exception( "您传入的文件为空." ) ;
            }else{
                if( !file.exists() ){
                    throw new Exception( "您传入的文件不存在." ) ;
                }else{
                    if ( fileTypeValidate( file ) ){
                        //1.1 开始提取文件名称,文件路径
                        String path = file.getParent() ;
                        String fileName = file.getName() ;
                        //切割文件名里面的信息
                        String prefix = fileName.substring( 0 , fileName.lastIndexOf(".")  );
                        String suffix = fileName.substring( fileName.lastIndexOf(".") + 1  );
                        /*String[] namePix = fileName.split("\\u002E");
                        String suffix = namePix[namePix.length-1] ;*/
                        //1.2 开始做文件识别,然后指向去2007版本的docx 还是去2003版本的doc
                        path = path + File.separator ;
                        if( isDocx( file ) ){
                            return Word2007ToHtml( file , path  , prefix  , path , iamgePrefix , accessPath  ) ;
                        }else{
                            return Word2003ToHtml( file , path , prefix , path , iamgePrefix , accessPath  ) ;
                        }
                    }
                }
            }
            return null ;
        }
    
    
    
        /**
         * 将word2003转换为html文件
         *
         * @param wordFile word文件
         * @param wordPath word文件路径
         * @param wordName word文件名称无后缀
         * @param htmlPath html存储地址
         * @param prefix   图片存储前缀
         * @param accessPath  图片的相对路径访问地址
         * @throws IOException
         * @throws TransformerException
         * @throws ParserConfigurationException
         */
        public static String Word2003ToHtml(File wordFile , String wordPath, String wordName, String htmlPath
                ,final String prefix  ,final String accessPath)
                throws IOException, TransformerException, ParserConfigurationException {
            String htmlName = wordName + ".html";
            //1.1 判断html文件是否存在
            File htmlFile = new File(htmlPath  + htmlName);
            if (htmlFile.exists()) {
                return htmlFile.getAbsolutePath();
            }
            //1.2 原word文档 - 文件路径信息
            //final String file = wordPath + File.separator + wordName  + "." + suffix;
            //InputStream input = new FileInputStream( new File( wordFile ) );
            InputStream input = new FileInputStream( wordFile );
            //1.3 final String imagePath
            final String imagePath = wordPath + "image" ;
    
            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) {
                    File imgPath = new File(imagePath);
                    if (!imgPath.exists()) {// 图片目录不存在则创建
                        imgPath.mkdirs();
                    }
                    String imageFileName = prefix  + suggestedName ;
                    File file = new File(imagePath + File.separator + imageFileName );
                    try {
                        OutputStream os = new FileOutputStream(file);
                        os.write(content);
                        os.close();
                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    // 图片在html文件上的路径 相对路径
                    return accessPath + imageFileName;
                }
            });
            // 解析word文档
            wordToHtmlConverter.processDocument(wordDocument);
            Document htmlDocument = wordToHtmlConverter.getDocument();
            // 生成html文件上级文件夹
            File folder = new File(htmlPath);
            if (!folder.exists()) {
                folder.mkdirs();
            }
            OutputStream outStream = new FileOutputStream(htmlFile);
            DOMSource domSource = new DOMSource(htmlDocument);
            StreamResult streamResult = new StreamResult(outStream);
            TransformerFactory factory = TransformerFactory.newInstance();
            Transformer serializer = factory.newTransformer();
            serializer.setOutputProperty(OutputKeys.ENCODING, "utf-8");
            serializer.setOutputProperty(OutputKeys.INDENT, "yes");
            serializer.setOutputProperty(OutputKeys.METHOD, "html");
            serializer.transform(domSource, streamResult);
            return htmlFile.getAbsolutePath();
        }
    
        /**
         * 2007版本word转换成html
         *
         * @param wordPath  word文件路径
         * @param wordName word文件名称无后缀
         * @param suffix   word文件后缀
         * @param htmlPath html存储地址
         * @param prefix   图片存储前缀
         * @param accessPath  图片的相对路径访问地址
         * @return
         * @throws IOException
         */
        public static String Word2007ToHtml( File wordFile , String wordPath, String wordName, String htmlPath
                ,final String prefix ,final String accessPath)
                throws IOException, TransformerException, ParserConfigurationException {
            String htmlName = wordName + ".html";
            //1.1) 拼接HTML文件地址、判断html文件是否存在
            File htmlFile = new File(htmlPath + htmlName);
            if (htmlFile.exists()) {
                return htmlFile.getAbsolutePath();
            }
            // word文件
            //File wordFile = new File(wordPath + File.separator + wordName + suffix);
            //1.2) 加载word文档生成 XWPFDocument对象
            InputStream in = new FileInputStream( wordFile );
            XWPFDocument document = new XWPFDocument( in );
            //1.3) 解析 XHTML配置 (这里设置IURIResolver来设置图片存放的目录)
            final String imagePath = wordPath + "image" ;
            File imgFolder = new File( imagePath );
            XHTMLOptions options = XHTMLOptions.create();
            options.setExtractor(new FileImageExtractor(imgFolder));
            // html中图片的路径 相对路径
            options.URIResolver( new BasicURIResolver( accessPath ) );
            options.setIgnoreStylesIfUnused(false);
            options.setFragment(true);
            //1.4) 将 XWPFDocument转换成XHTML
            // 生成html文件上级文件夹
            File folder = new File(htmlPath);
            if (!folder.exists()) {
                folder.mkdirs();
            }
            OutputStream out = new FileOutputStream(htmlFile);
            XHTMLConverter.getInstance().convert(document, out, options);
            return htmlFile.getAbsolutePath();
        }
    
        public static void main(String[] args) {
            try {
                //Word2003ToHtml("E:\\templates", "2019-11-26", ".doc", "E://templates/");
                WordAutoToHtml( new File("E:\\templates\\OnLineWord.doc") , "image_" , "image/");
                //WordAutoToHtml( new File("E:\\templates\\OnLineWord.docx") , "image_" , "image/");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
    
    }
    

     

    第三步:使用结果

    2007版本:Word文档样式

    实际转换结果为:图片的居中,字体等信息自动换行效果不理想。

    2003版本的Word文档也有上述问题,大家使用此技术时请注意此问题。

     

    参考来源:Java实现word转HTML

    展开全文
  • java使用jacob将word,excel,ppt转成html,代码和所需的jar都在压缩包,项目需求实现后分享下
  • java实现HTML转Word

    2022-03-28 22:31:53
    java实现HTML转Word

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 158,708
精华内容 63,483
关键字:

word转成html