近期公司项目有一个web端对文档编辑的需求偶然看到WPS开放平台做了一个简单的编辑demo

PHP端

  public function detail($ids = null){   // $id = 1;$data = ['_w_appid' => '你的APPID',];$sing = $this->getSign($data);//生成签名//type 值需要根据文档中文件的格式去定义  我只处理doc、docx所以固定了$url = 'https://wwo.wps.cn/office/w/' . 文档id . '?_w_appid=' .'你的APPID'. '&_w_signature=' . $sing;$this->assign('url', $url);return $this->fetch();}/*** 生成wps要的签名*/function getSign($data){ksort($data); //按照key升序排列$stringA = '';foreach ($data as $key => $item) {$stringA .= $key . '=' . $item; // 整合新的参数数组}$stringSignTemp = $stringA . "_w_secretkey=" . '你的Key';//拼接$appKey$stringSignTemp = hash_hmac('sha1', $stringSignTemp, '你的Key', true);$sign = base64_encode($stringSignTemp);return urlencode($sign);}//下面中info()和save()接口需要重定向分别是:/v1/3rd/file/info、/v1/3rd/file/save/*** 获取文件信息*/public function info(){$header = request()->header();$id = $header['x-weboffice-file-id'];//文件id在你传给wps时它会返给你$templates = db('你的表')->where(['id' => $id])->find();//下面的格式 wps固定 具体的要看wps文档$data = ['file' => ['id' => $id, //文件id,字符串长度小于40'name' => $templates['name'], //文件名'version' => $templates['edition'], //当前版本号,位数小于11'size' => $templates['size'], //文件大小,单位为B'creator' => 'id0', //创建者id,字符串长度小于40'create_time' => time($templates['creattime']), //创建时间,时间戳,单位为秒'modifier' => "id1000", //修改者id,字符串长度小于40'modify_time' => time(), //修改时间,时间戳,单位为秒'download_url' => $templates['url'], //文档下载地址'preview_pages' => 100,'user_acl' => ['rename' => 0, //重命名权限,1为打开该权限,0为关闭该权限,默认为0'history' => 0, //历史版本权限,1为打开该权限,0为关闭该权限,默认为1'copy'=> 1, // 复制'export'=> 1, // 导出PDF'print' => 1, // 打印],'watermark' => ['type' => 0, //水印类型, 0为无水印; 1为文字水印'value' => "", //文字水印的文字,当type为1时此字段必选'fillstyle' => "rgba( 192, 192, 192, 0.6 )", //水印的透明度,非必选,有默认值'font' => "bold 20px Serif", //水印的字体,非必选,有默认值'rotate' => -0.7853982, //水印的旋转度,非必选,有默认值'horizontal' => 50, //水印水平间距,非必选,有默认值'vertical' => 100 //水印垂直间距,非必选,有默认值]],'user' => ['id' => $templates['admin_id'], //用户id,长度小于40'name' => 'wps-'.$templates['admin_id'], //用户名称'permission' => "write", //用户操作权限,write:可编辑,read:预览'avatar_url' => "" //用户头像地址]];return json_encode($data);}/*** 保存文件*/public function save(){   $menus=new  Obs;$header = request()->header();$id = $header['x-weboffice-file-id'];//$header['x-weboffice-file-id']$templates = db('你的表')->where(['id' => $id])->find();$url = $menus->uploads($_FILES);//文件上传接口$arr = array('name' => $_FILES['file']['name'],'size' => $_FILES['file']['size'],'url' =>  $url,'edition' => $templates['edition']+1);db('你的表')->where(['id' => $id])->update($arr);$data = ['file' => ['id' => $id, //文件id,字符串长度小于40'name' => $_FILES['file']['name'], //文件名'version' => $templates['edition']+1, //当前版本号,位数小于11'size' => round($_FILES['file']['size']/8), //文件大小,单位是B'download_url' => $url //文件下载地址]];return json_encode($data);}

前端

  <script>window.onload = function() {const jssdk = WebOfficeSDK.config({url: "<?php echo $url ?>", // 该地址需要后端提供,https://wwo.wps.cn/office/p/xxx});// 如果需要对 iframe 进行特殊的处理,可以通过以下方式拿到 iframe 的 dom 对象console.log(jssdk.iframe);// 打开文档结果jssdk.on('fileOpen', (data) => {console.log(data);});};</script>

效果图

php对接WPS开放平台word编辑demo相关推荐

  1. 基于WPS开放平台 WPS文件转PDF开发指南

    前几天开发工具箱里的一个功能:文档格式转换,打算支持WPS文档转PDF,在网上找了半天也没找到合适.后来到WPS的官网找了下,发现他们有个开放平台,里面有API可以实现.最终也是基于这个WPS开放平台 ...

  2. php对接阿里巴巴开放平台

    php对接阿里巴巴开放平台 /**** @param $api 阿里巴巴接口名称* @param $accessToken 用户授权后的access_token(具体授权方法请参考:https://b ...

  3. php对接支付宝当面付对接,支付宝开放平台当面付对接网站

    最近才发现当面付这个支付宝官方审核不严格,不审核网站有没有备案,比直接对接支付宝的电脑手机支付好. 先去支付宝商家用户中心签约下当面付功能,不过据说现在当面付签约要求挺严格的,需要门头照啥的,我们旗下 ...

  4. js宏编程--wps开放平台介绍

    在上篇<初识Excel的JS环境WPS宏编程>中提到,JS宏编程有2个比较好的参考资料,一个是官方的WPS开发平台介绍,另一个则是ES6教程,本文就WPS开发平台关于JS宏编程的重点做一个 ...

  5. 阿里巴巴开放平台composer sdk demo | php-sdk

    阿里巴巴开放平台SDK Special thanks to the generous sponsorship by: . Installing $ composer require liaosp/al ...

  6. wps在线预览接口_金山文档在线编辑 - 快速接入 - 《WPS开放平台技术文档》 - 书栈网 · BookStack...

    快速接入 一.申请和上线流程如下: 1.申请Appid和SecretKey 需要前往https://open.wps.cn 注册服务商,并且申请开通金山文档在线编辑服务. 2.实现回调接口 根据本文档 ...

  7. 高德开放平台定位功能对接

    [高德开放平台] 定位对接 萌璐琉璃 https://www.jianshu.com/p/312287e25444 目标 对接高德开放平台的定位接口 依赖 <!-- httpclient 工具类 ...

  8. php开放平台,千米开放平台

    SDK版本说明 为了让开发者快捷开发接入,千米开放平台推出了SDK开发包,SDK是由程序自动化生成的代码包,其中包含了开放平台已经开放的API,封装了API调用的请求入入参,签名加密,返回值解析等一些 ...

  9. “淘宝” 开放平台接口设计思路

    最近对接的开放平台有点多,像淘宝.京东.快手.抖音等电商平台的开放平台基本对接了个遍,什么是CRUD BODY也许就是这样的吧!!! 虽然对接各大开放平台没啥技术含量,但咱也得学点东西不是,不能白对接 ...

最新文章

  1. 从技术输出到产业赋能,网易云信走过的四年
  2. 阿里、字节为何都如此偏爱Go语言?
  3. OC 线程操作 - GCD快速迭代
  4. 如何将 Azure 上的 Ubuntu 19.10 服务器升级到 20.04
  5. 全球数字经济白皮书——疫情冲击下的复苏新曙光
  6. mysql导出csv格式去除字段中的\n\r
  7. 图论 —— 二分图 —— 二分图判定
  8. C++Function Object Adapter之not1
  9. java swing 帮助文档,在Java Swing应用程序中创建在线帮助-使用pdf用户文档
  10. 水凝胶 静电纺丝_【再生医学前沿】Nature子刊:静电纺丝玩出新花样!静电射流偏转的超快3D打印亚微米结构...
  11. 你们要的Windows IDEA 快捷键终极大全,速度收藏!
  12. centos7中使用LVM管理磁盘和挂载磁盘
  13. html特殊乘转义字符,HTML特殊转义字符列表
  14. 动态规划之矩阵连乘问题详细解读(思路解读+填表+代码)
  15. EmmyLua的安装与使用
  16. 如何测试蓝牙设备的延时
  17. 显著性目标检测之Shifting More Attention to Video Salient Object Detection
  18. 长短期记忆人工神经网络(LSTM)网络学习资料
  19. 《联邦学习实战》杨强 读书笔记十七——联邦学习加速方法
  20. 信息抽取之实体消歧,统一

热门文章

  1. VUE中V-IF条件判断改变元素的样式
  2. 崩坏三8月20号服务器维修,崩坏3手游8月20日更新了什么
  3. Eclipse4.6(neno)配置Tomcat插件的两种方式
  4. 什么是P=NP问题?
  5. openstack compute service list报错(HTTP 503)
  6. python控制软件自动化测试,资讯详情-用python来使用Airtest 自动化工具-柠檬班-自动化测试-软件测试培训-自学官网...
  7. linux git版本更新
  8. ajax富客户端存在的意义,基于AJAX的网上银行富客户端研究与设计
  9. 微信公众号音乐html,如何在微信公众号文章内插入音频及样式?
  10. Discuznbsp;x2.5单页制作的教程