IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> php对接WPS开放平台word编辑demo -> 正文阅读

[PHP知识库]php对接WPS开放平台word编辑demo

近期公司项目有一个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知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-02-14 20:53:46  更:2022-02-14 20:55:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 11:24:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码