实现一下类似百度网盘的预览功能:支持Word、Excel、Ppt

本人技术小白一枚,前些天老大让我写一个office在线预览的一个功能,跟百度网盘类似,各种找资料,总结一下我觉得比较好用的方法。

 

网上大概有这几种office在线预览的方法。

 

# 第一种

 

利用office online实现在线预览,Office平台提供了通过url的指向达到预览效果。

 

http://view.officeapps.live.com/op/view.aspx?src=

 

后面的src填写文档上传到服务器的地址,地址需要通过用URLEncode进行编译。

 

例: 

http://view.officeapps.live.com/op/view.aspx?src=http%3a%2f%2fvideo.ch9.ms%2fbuild%2f2011%2fslides%2fTOOL-532T_Sutter.pptx

 

参照链接:

https://blog.csdn.net/csdn_cjgu/article/details/69389474

 

优点:这个功能由Office提供所以只需要拼接地址。

 

缺点:文档的访问地址不能直接使用 ip,需要通过域名访问,并且端口必须是 80 端口,Word、ppt文档的大小不能超过10M,Excel不能超过5M

 

# 第二种

 

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

 

2.通过swfTools将pdf文件转换成swf格式的文件; 

 

3.通过FlexPaper文档组件在页面上进行展示。 

 

参照链接:

https://blog.csdn.net/tmac937436/article/details/70799687?locationNum=14&fps=1

 

总结一下这种方法的利弊

 

优点:openoffice有各种版本,支持跨平台,转换速度快;

 

缺点:转换的样式会有缺损,Excel和openoffice完美不兼容 =  . = ,转换的时候会出现折行,切分等情况,效果很不理想;

 

FlexPaper这个是用Flash插件显示的,展示的效果优点low。

 

# 第三种

 

利用poi实现office在线预览

 

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
public static void PoiWord07ToHtml (HttpServletRequest request) throws IOException{
    String path= "C:\\Users\\Administrator\\Desktop\\";  String file = "C:\\Users\\Administrator\\Desktop\\word07.docx";  String file2 ="C:\\Users\\Administrator\\Desktop\\word07.html";  File f = new File(file);  if (!f.exists()) {
      System.out.println("Sorry File does not Exists!");  } else {
      if (f.getName().endsWith(".docx") || f.getName().endsWith(".DOCX")) {
        //读取文档内容      InputStream in = new FileInputStream(f);      XWPFDocument document = new XWPFDocument(in);      File imageFolderFile = new File(path);      //加载html页面时图片路径      XHTMLOptions options = XHTMLOptions.create().URIResolver( new BasicURIResolver("./"));      //图片保存文件夹路径      options.setExtractor(new FileImageExtractor(imageFolderFile));      OutputStream out = new FileOutputStream(new File(file2));      XHTMLConverter.getInstance().convert(document, out, options);      out.close();    } else {
        System.out.println("Enter only MS Office 2007+ files");    }  }}

 

总结一下这种方法的利弊

 

优点:纯java代码不需要第三方软件,poi对于Excel的解析比较好,可以完美转换。

 

缺点:jar包真的好难找啊,各种版本不兼容问题,比如word03和word07生成的分别是.doc和docx,poi对于.doc不识别,然后各种报错,由于生成的是Html所以它会把Word中的图片单独存放在一个文件下很占空间。

 

# 第四种

 

使用jacob实现office转换pdf达到预览功能。

 

pom文件中引用

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
<dependency>  <groupId>net.sf.jacob-project</groupId>  <artifactId>jacob</artifactId>  <version>1.14.3</version></dependency>

<dependency>  <groupId>com.lowagie</groupId>  <artifactId>itext</artifactId>  <version>2.1.7</version></dependency><!--poi--><dependency>  <groupId>org.apache.poi</groupId>  <artifactId>poi-ooxml</artifactId>  <version>3.14-beta1</version></dependency>

网上查找jacob对应版本包把jacob-1.14.3-x64.dll复制到需要在Java\jdk1.8.0\jre\bin目录下,

 

经过多次测试发现jacob对于Excel的转换有些问题,所以Excel的转换我用的是poi。

 

自定义一个工具类Word2Pdf

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值