php 永中office在线预览

永中office在我的项目中主要的应用目的是在线预览office文件。
至于为啥不用微软,不知道是不是我的姿势不对,大佬也说在国内可能出现无法转换(误)。
复制代码

准备

永中office DCS文档

先进入官网,我需要的office在线预览功能在永中的DCS文档。

**这里我就不得不吐槽了,作为和罗老师(罗永浩)一起研发下一代智能语音控制的坚果office的合作厂商,这文档写的太不明确了吧。**
复制代码

确定项目方案

永中这边提供的文件预览方式有两种:
1. 给永中的服务一个office文件的下载链接,永中服务器下载文件转换预览后给你一个网页地址。
    - 预览的用户需要上外网(由于我是做oa的,客户还真的不一定有外网)
    - 你的服务站点必须要在公网环境(oa的也真的不一定),要能被永中服务器下载到。
2. 给永中的服务上传一个office文件,返回一个网页地址。
    - 预览的用户需要上外网
    - 你的服务站点必须能上传文件到外网

由于我是开发oa系统的选手,选择了限制条件较少的2方式。
复制代码

调用接口

忍不住再吐槽一遍,官网文档的调用示例是不知道从哪里抄来的一段php上传文件的代码,我认为是非常不明确的,因此我对照了kodexplorer里的方法来编写,这里感谢一下这些可爱的开源工作者。
复制代码

下载链接方式(1)

这个方法只是一个简单的http请求,直接上示例就好。
复制代码
<?php
$url = "http://dcs.yozosoft.com/onlinefile";
$uri = "http://dcs.yozosoft.com/example/doc/doctest.docx";
$response = onlinefile($url, $uri);
echo $response;

function onlineFile($url, $uri)
{
    $data = array('downloadUrl' => $uri, 'convertType' => '1');
    $data = http_build_query($data);
    $params = array(
        'http' => array(
            'method' => 'POST',
            'content' => $data,
            'header' => "Content-type:application/x-www-form-urlencoded"
        )
    );
    $ctx = stream_context_create($params);
    $fp = file_get_contents($url, false, $ctx);
    if (!$fp) {
        return false;
    }
    return $fp;

}
复制代码

结果:

{
    "result": 0,
    "data": [
        "http://dcs.yozosoft.com:8000/2018/11/14/MTgxMTE0ODM0Njc1MjMy.html"
    ],
    "message": "转换成功",
    "type": 1
}
复制代码

上传文件方式

这个方式也很简单,其实把参数明确就没有那么多弯路要走,再次吐槽官方文档上的示例。
复制代码
$url = "http://www.yozodcs.com/upload";
$response = uploadFile($url, './1.xls');
echo $response;

function uploadFile($url, $filePath)
{
    $filePathInfo = pathinfo($filePath);
    $post = array("convertType" => 1);
    $mime = 'application/vnd.ms-excel';
    if (@class_exists('\CURLFile')) {
        $post['file'] = new CURLFile($filePath, $mime, $filePathInfo['filename']);
    } else {
        $post['file'] = "@" . $filePath . ";type=" . $mime . ";filename=" . $filePathInfo['filename'];
    }
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    $result = curl_exec($ch);
    curl_close($ch);
    if (!empty($result)) {
        return $result;
    }
    return false;
}
复制代码

结果:

{
    "result": 0,
    "data": [
        "http://dcs.yozosoft.com:8000/2018/11/14/MTgxMTE0ODM0Njc1MjMy.html"
    ],
    "message": "转换成功",
    "type": 1
}
复制代码

总结

永中office预览还是挺好用的,但是并不是完全适合用于所有场景,毕竟很多office文件都是内部文件,可能有关单位会比较在意这些。 多学多看多练,这里是刘子沐,我们下期,再见(还不知道有没有下期)。

刘子沐的博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值