首页 > 作文

Java实现 word、excel文档在线预览

更新时间:2023-04-04 01:49:27 阅读: 评论:0

java实现办公文件在线预览功能是一个大家在工作中也许会遇到的需求,网上些公司专门提供这样的服务,不过需要收费

如果想要免费的,可以用openoffice,实现原理就是:

通过第三方工具openoffice,将word、excel、ppt、txt等文件转换为pdf文件流;

当然如果装了adobe reader xi,那把pdf直接拖到浏览器页面就可以直接打开预览,前提就是浏览器支持pdf文件浏览。

我这里介绍通过poi实土木工程专业怎么样现word、excel、ppt转pdf流,这样就可以在浏览器上实现预览了。

1.到官网下载apache openoffice 安装包,安装运行。(不同系统的安装方法,自行百度,这里不做过多说明)

2.再项目的pom文件中引入依赖

        <!--openoffice-->        <dependency>            <groupid>com.artofsolving</groupid>            <artifactid>jodconverter</artifactid>            <version>2.2.1</version>        </dependency>

3.将word、excel、ppt转换为pdf流的工具类代码

 import com.artofsolving.jodconverter.defaultdocumentformatregistry;import com.artofsolving.jodconverter.documentconverter;import com.artofsolving.jodconverter.documentformat;import com.artofsolving.jodconverter.openoffice.connection.openofficeconnection;import com.artofsolving.jodconverter.openoffice.connection.socketopenofficeconnection;import com.artofsolving.jodconverter.openoffice.converter.streamopenofficedocumentconverter; import java.io.*;import java.net.httpurlconnection;import java.net.url;import java.20年后的家乡五年级作文500字net.urlconnection;  /** * 文件格式转换工具类 * * @author tarzan * @version 1.0 * @since jdk1.8 */public class fileconvertutil {    /** 默认转换后文件后缀 */    private static final string default_suffix = "pdf";    /** openoffice_port */    private static final integer openoffice_port = 8100;     /**     * 方法描述 office文档转换为pdf(处理本地文件)     *     * @param sou雪的诗句rcepath 源文件路径     * @param suffix     源文件后缀     * @return inputstream 转换后文件输入流     * @author tarzan     */    public static inputstream convertlocalefile(string sourcepath, string suffix) throws exception {        file inputfile = new file(sourcepath);        inputstream inputstream = new fileinputstream(inputfile);        return covertcommonbystream(inputstream, suffix);    }     /**     * 方法描述  office文档转换为pdf(处理网络文件)     *     * @param netfileurl 网络文件路径     * @param suffix     文件后缀     * @return inputstream 转换后文件输入流     * @author tarzan     */    public static inputstream convertnetfile(string netfileurl, string suffix) throws exception {        // 创建url        url url = new url(netfileurl);        // 试图连接并取得返回状态码        urlconnection urlconn = url.openconnection();        urlconn.connect();        httpurlconnection httpconn = (httpurlconnection) urlconn;        int httpresult = httpconn.getresponcode();        if (httpresult == httpurlconnection.http_ok) {            inputstream inputstream = urlconn.getinputstream();            return covertcommonbystream(inputstream, suffix);        }        return null;    }     /**     * 方法描述  将文件以流的形式转换     *     * @param inputstream 源文件输入流     * @param suffix      源文件后缀     * @return inputstream 转换后文件输入流     * @author tarzan     */    public static inputstream covertcommonbystream(inputstream inputstream, string suffix) throws exception {        bytearrayoutputstream out = new bytearrayoutputstream();        openofficeconnection connection = new socketopenofficeconnection(openoffice_port);        connection.connect();        documentconverter converter = new streamopenofficedocumentconverter(connection);        defaultdocumentformatregistry formatreg = new defaultdocumentformatregistry();        documentformat targetformat = formatreg.getformatbyfileextension(default_suffix);        documentformat sourceformat = formatreg.getformatbyfileextension(suffix);        converter.convert(inputstream, sourceformat, out, targetformat);        connection.disconnect();        return outputstreamconvertinputstream(out);    }     /**     * 方法描述 outputstream转inputstream     *     * @author tarzan     */    public static bytearrayinputstream outputstreamconvertinputstream(final outputstream out) throws exception {        bytearrayoutputstream baos=(bytearrayoutputstream) out;        return new bytearrayinputstream(baos.tobytearray());    }       public static void main(string[] args) throws ioexception {        //convertnetfile("http://172.16.10.21/files/home/upload/department/ba/201912090541573c6abdf2394d4ae3b7049dcee456d4f7.小说三要素doc", ".pdf");        //convert("c:/urs/admin/desktop/2.pdf", "c:/urs/admin/desktop/3.pdf");    }}

4.rve层在线预览方法代码

 /**     * @description:系统文件在线预览接口     * @author: tarza管理学专业n     */    public void onlinepreview(string url, httprvletrespon respon) throws exception {        //获取文件类型        string[] str = smartstringutil.split(url,"\\.");         if(str.length==0){            throw new exception("文件格式不正确");        }        string suffix = str[str.length-1];        if(!suffix.equals("txt") && !suffix.equals("doc") && !suffix.equals("docx") && !suffix.equals("xls")                && !suffix.equals("xlsx") && !suffix.equals("ppt") && !suffix.equals("pptx")){            throw new exception("文件格式不支持预览");        }        inputstream in=fileconvertutil.convertnetfile(url,suffix);        outputstream outputstream = respon.getoutputstream();        //创建存放文件内容的数组        byte[] buff =new byte[1024];        //所读取的内容使用n来接收        int n;        //当没有读取完时,继续读取,循环        while((n=in.read(buff))!=-1){            //将字节数组的数据全部写入到输出流中            outputstream.write(buff,0,n);        }        //强制将缓存区的数据进行输出        outputstream.flush();        //关流        outputstream.clo();        in.clo();    }

5.controler层代码

    @apioperation(value = "系统文件在线预览接口 by tarzan")    @postmapping("/api/file/onlinepreview")    public void onlinepreview(@requestparam("url") string url, httprvletrespon respon) throws exception{        filervice.onlinepreview(url,respon);    }

到此这篇关于java实现 word、excel文档在线预览的文章就介绍到这了,更多相关java 文档在线预览内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 01:49:11,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/0201a3321fea4c9e00fe9f26826ff72f.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:Java实现 word、excel文档在线预览.doc

本文 PDF 下载地址:Java实现 word、excel文档在线预览.pdf

标签:文件   在线   源文件   后缀
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图