zoukankan      html  css  js  c++  java
  • 微软office web apps 服务器搭建之在线文档预览(二)

    上一篇文章已经介绍了整个安装过程了。只要在浏览器中输入文档转换server的ip,会自动跳转,出现如下页面。

     

    那么就可以实现本地文档预览了,你可以试试。(注意;是本地哦,路径不要写错,类似“\fileshare”。如果不能预览,那么还要注意文档的权限哦,不多说。)

    看到这个,就算完成80%以上的工作了,因为不需要写任何代码,只要安装好服务器,就可以实现本地文件预览了。那么问题就来了,怎么实现http预览,跨服务器预览呢?且看下面。

    如果要想实现http访问,跨服务器访问,那么就要实现wopi协议了。这个不是只能实现本地文件预览。

    这个也是大家最关心的了。刚开始的时候我也一直不知道怎么弄,问了好多其他童鞋,都说只能实现本地文件预览。后来寻寻觅觅,终于找了C#的实现,我尝试着用php简单的实现了,很简单。继续往下看吧。

    以下也主要是参考:http://www.cnblogs.com/poissonnotes/p/3277280.html 

    这篇文章也是超级经典。(上篇安装的也是参照这个作者的,文章很经典)

    我也不知羞耻,重新用php炒一下剩饭。

    1、主要实现wopi协议(http://msdn.microsoft.com/en-us/library/hh622722(v=office.12).aspx 参看WOPI协议,装下13,可以下载下来看看)

    WOPI通讯主要实现两个服务: 
    1)、一个是CheckFileInfo服务 
    2)、一个是GetFile服务

    2、创建服务

    1)、首先创建CheckFileInfo服务 
    我们先确定这个服务的路由地址 
    设置为:HTTP://server/<...>/wopi*/files/?access_token=

    注意:这里没有验证access_token,请自行验证。很多同学问access_token怎么来的,这个自己设置就行,不是必须的。

    代码实现如下,主要是返回一个json对象的文件信息。 

    在浏览器中输入:http://localhost/wopihost/wopi/files/test.docx(项目中需要存在该test.docx文件),返回如下数据,则表示成功 

    2)、再来制作GetFile服务

    我们先确定这个服务的路由地址 
    设置为:HTTP://server/<...>/wopi*/files//contents?access_token=

    代码如下:GetFile服务主要是返回文件的数据流。

    3)、验证服务

    http://192.168.1.21/hosting/discovery 
    通过以上链接返回的信息,可以知道不同类型的文档访问的链接。

    在浏览器输入以下链接:http://192.168.1.21/wv/wordviewerframe.aspx?WOPISrc=http%3A%2F%2F192.168.1.102%2Fwopihost%2Fwopi%2Ffiles%2Ftest.docx 
    (注意test文档必须存在,路径正确哦)

    其中:192.168.1.21是office web apps server,192.168.1.102是实现wopi服务的server

    如果出现如下,则表示成功。 很简单吧,大家可以随意的集成到自己的项目中去了。

    注意:如果没有成功,不要灰心,可以先调试excel,因为excel没有验证SHA256算法,如果excel成功了,其他类型文档没有成功,那么说明SHA256算法实现不对。

    附上我的wopihost开源实现,仅供参考:https://github.com/cisiqo/WopiHost (最近又抽筋了,访问比较慢)

    另外再附上公司使用这套方案的转换页面: 第一个使用了iframe,第二个正常访问的

    ==========分割线=========

    当然,office web apps不仅仅做可以预览,当然也可以在线编译了。下面附一张别人验证的截图(http://blog.csdn.net/ma_jiang/article/details/24057847 评论中有贴过的):

    以上edit和remark我没有做过验证,这个也是我接下来的工作,有进展我会继续博客的。

    view和mobileview已经验证,目前测试https下,好像预览也有问题,不过这个是可以解决的,传输过程可以使用https,服务器之间可以不用走https协议。

    ========再分割=======

    在查资料的时候发现,我们的竞争对手明道(企业社交应用)也是用这个方案(https://docview.mingdao.com),不知道他们使用的情况如何。

    --------- 签名 -----------
    本文版权归本博作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    VSCode一些设置
    Asp.net MVC Vue Axios无刷新请求数据和响应数据
    Vue+element基本增删改查
    SAP客户主数据相关表
    [问题解决]Carry out repairs in non-original systems only if urgent
    [BAPI]取得生产订单详细信息[BAPI_PRODORD_GET_DETAIL]
    如何创建视图簇(View cluster)-SE54/SM34
    修改包装单元(handling unit)用户状态[HU_STATUS_UPDATE]
    如何在table control中创建单选按钮(radio button)
    如何在事件AT SELECTION-SCREEN ON VALUE-REQUEST中取得选择画面字段输入值
  • 原文地址:https://www.cnblogs.com/lovechengcheng/p/4117435.html
Copyright © 2011-2022 走看看