office文件在线预览

原文: https://mojun.blog.csdn.net/article/details/106740011




需求背景

最近学妹她们那边有一个项目类似在线网盘的东西,支持文件上传保存。其中除了普通text文本以外,还有如office文件word、excel、ppt等文件,并且提供在线预览的功能。用户能够在线预览文件内容,并且分享预览链接出去的word不能下载到这个文件,不能暴露实际文件URL路径。她那边不知道怎么来处理这个问题,所以自然问了我一下。恰好之前这块我也做过一些这方面的项目,罗列几个处理方案。


解决方案


1.openoffice转化


推荐指数: 2 颗星


Apache下有一款软件基于Java开发的软件openoffice可以运行在Linux并且支持将Word文件转化为PDF或者HTML页面。我们可以利用这个软件对我们上传的文件通过这个openoffice提供的转化接口转化得到PDF或者HTML页面,这样我们再使用一个HTML页面把生成的PDF或者HTML整合一下就能达到预览目的了。


可以参考我以前记录博客: openoffice转化


虽然可以支持预览问题,不过这种方式不是很靠谱各种语言调用接口方式不同,API不太友好,效果不是比较令人满意,需要采坑。


2.微软在线预览接口


推荐指数: 3 颗星


可以参考我的博客: 微软在预览


预览效果倒是相对openoffice好,但是还是不能避免那个下载问题。文档的真实URL暴露,则其实分享预览链接的时候文档也暴露了。


3.永中文档


推荐指数: 5 颗星


官网: 永中文档官网


这个解决方案也是同事之前他们项目采用的,简单、快捷可以把剩余精力放在其他开发的地方。


永中文档提供针对Office文档预览、在线编辑等功能等的一个产品。主要是能够满足我们的需求:


1.能够实现在线预览的基本要求
2.不会暴露我们文档的下载地址
3.支持预览链接过期时间


还有一些附加的功能可以设置我们的文档水印、防文本复制等等。而且商用版本支持私有云部署,可以支持部署在公司内网作为预览服务器。免费版只需要注册用户,添加域名即可使用,还算是相对方便的。 获取预览地址,调用API代码很简单,几行代码就搞定了。


下面我做调用接口弄个demo大家可以看一下,官网注册账号我就不说了。进入公有云服务中心,新增域名,之后通过GET接口即可转化拿到预览地址。


1.添加域名
在这里插入图片描述
每个域名会拿到一个key,这个域名就是我们的网站的域名。 之后通过代码调用get请求就能拿到json字符串, json中拿到预览URL地址:


  1. 获取预览地址文档
    在这里插入图片描述
  2. PHP代码案例

<?php

$key = ‘47869076824915968173682’; // 永中文档后台获取到的key
$myDomain = https://xxx.com/my.pptx'; // 自己域名文件所处路径

$url = http://api.yozocloud.cn/getPreview?k={$key}&url={$myDomain};
$respJson = file_get_contents($url);
$respArr = json_decode($respJson, true);
var_dump($respArr);
$previewUrl = $respArr[“data”][“data”]; // 拿到预览的URL地址


在这里插入图片描述