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 条评论) |