对接WPS文档的在线预览编辑服务

一、简介

金山文档在线预览编辑服务,是以 H5 网页的形式提供,支持全平台接入。
在线服务完整的使用,需要“对接方前端+服务端”的参与。

  • 前端:根据文件格式(Word、Excel、PPT 等)生成访问金山文档的 url,通过 js-sdk 接入,调用相关 API 来实现相关需求
  • 服务端:根据金山文档在线预览编辑服务提供的回调 API 实现接口,将数据存储到对接方的公网服务器中

二、申请服务商

申请地址:https://open.wps.cn/apply-developer
需要上传营业执照

三、服务端

3-1、服务端接入

接入地址:https://wwo.wps.cn/docs/server/fast-access/technical-framework
demo地址:https://wwo.wps.cn/docs/server/fast-access/demo/

3-2、接入方式

3-2-1、文件预览

需要实现的接口

3-2-2、文件编辑

需要实现的接口

3-2-3、文件新建

需要实现的接口

四、前端

4-1、说明

Web Office SDK for Javascript 是在线 Office 文档编辑面向网页开发者提供的网页开发工具包,后续的文档将简称 js-sdk。
通过使用 js-sdk,网页开发者可以为自定义界面显示、页面状态、监听事件等能力,同时可以直接使用高级 API 来操作文档,为用户提供更优质的网页体验。

4-2、前端接入

接入地址:https://wwo.wps.cn/docs/front-end/introduction/quick-start

4-3、下载

下载地址:https://wwo.wps.cn/docs/update-log/jssdk/jssdk-update-log

4-4、HTML页面

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>WebOffice</title>
</head>

<body>
  <div class="w_custom_mount"></div>
</body>
</html>

4-5、JS引用

js-sdk 提供了支持非模块化以及 AMD、CommonJS、ES6 多种模块化规范的包

各种包的引用
var WebOfficeSDK = require('../lib/js/wpssdk');
var currentToken = '';

window.onload = function() {
  const jssdk = WebOfficeSDK.config({
    // 开发的时候可以先前往 kdocs.cn 获取预览地址
    // 例如:https://www.kdocs.cn/p/xxxx?from=docs
    url: '在线文档预览地址',
  });
  // 如果需要对 iframe 进行特殊的处理,可以通过以下方式拿到 iframe 的 dom 对象
  console.log(jssdk.iframe);
  $(".w_custom_mount").html(jssdk.iframe);
  $(".web-office-default-container").remove();

  // 打开文档结果
  jssdk.on('fileOpen', function(data){
    console.log(data.success);
  });

  // 首次设置 token 和 后续刷新,token都是通过调用此API(如果没有设置token的话,会报token失败的问题)
  jssdk.setToken({
    token : currentToken
  });
};

或者

var WebOfficeSDK = require('../lib/js/wpssdk');
var currentToken = '';

const jssdk = WebOfficeSDK.config({
  // 开发的时候可以先前往 kdocs.cn 获取预览地址
  // 例如:https://www.kdocs.cn/p/xxxx?from=docs
  url: '在线文档预览地址',
});
// 如果需要对 iframe 进行特殊的处理,可以通过以下方式拿到 iframe 的 dom 对象
console.log(jssdk.iframe);
$(".w_custom_mount").html(jssdk.iframe);
$(".web-office-default-container").remove();

// 打开文档结果
// jssdk.on('fileOpen', function(data){
//  console.log(data.success);
// });

// 文件名重命名的事件回调
jssdk.on('fileNameChange', function(e){
  $(".ocw_docTitle").html(e.fileName);
});

// 首次设置 token 和 后续刷新,token都是通过调用此API(如果没有设置token的话,会报token失败的问题)
jssdk.setToken({
  token : currentToken
});

4-6、自定义页面

4-6-1、mode

选项值 说明 是否默认选项
normal 普通模式,展示所有功能界面
simple 极简模式,不显示头部和工具栏
const jssdk = WebOfficeSDK.config({
  url : redirect_url,
  mode: 'simple'
});
$(".w_custom_mount").html(jssdk.iframe);
$(".web-office-default-container").remove();
mode为simple:不显示头部和工具栏

mode为normal:显示头部和工具栏

4-6-2、commonOptions

配置项 说明
isShowTopArea 是否显示顶部区域
isShowHeader 是否显示头部区域
iisBrowserViewFullscreen 是是否在浏览器区域全屏,为 true 不允许全屏
iisIframeViewFullscreen 是是否在 iframe 区域内全屏,为 true 不允许全屏
const jssdk = WebOfficeSDK.config({
  url : redirect_url,
  commonOptions: {
    isShowTopArea: true, // 隐藏顶部区域(头部和工具栏)
    isShowHeader: false, // 隐藏头部区域
    isBrowserViewFullscreen: false, // 是否在浏览器区域全屏
    isIframeViewFullscreen: false, // 是否在 iframe 区域内全屏
  }
});
$(".w_custom_mount").html(jssdk.iframe);
$(".web-office-default-container").remove();
isShowHeader为false:显示工具栏

4-6-3、commandBars

ID 说明
cmbId 组件ID
attributes 属性

attributes的说明:

属性 支持 说明
visible boolean 组件显示切换(默认 true)
enable boolean 组件状态切换(默认 true),禁用或者开启组件
const jssdk = WebOfficeSDK.config({
  url : redirect_url,
  commandBars: [{
    cmbId: 'HeaderLeft', // 组件 ID
    attributes: {
      visible: false, // 隐藏组件
      enable: false, // 禁用组件,组件显示但不响应点击事件
    }
  }]
});
$(".w_custom_mount").html(jssdk.iframe);
$(".web-office-default-container").remove();
左侧的“标题+自动保存所有内容”:隐藏

五、注意

5-1、要将WPS的项目部署到远程
5-2、文件存储到阿里云,阿里云的 Bucket权限 或者 文件权限 要为 公共读写,不能为 私有
5-3、出现报错的话,一般是数据库、回调地址的方法有问题、存储文件的权限要公共读写
5-4、重命名文件名时,出现“只限文档所有者可重命名”,可通过设置user_acl
通过设置user_acl的“rename=1”
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,036评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,046评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,411评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,622评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,661评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,521评论 1 304
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,288评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,200评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,644评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,837评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,953评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,673评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,281评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,889评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,011评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,119评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,901评论 2 355

推荐阅读更多精彩内容

  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 14,616评论 1 180
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,536评论 28 53
  • 人工智能是什么?什么是人工智能?人工智能是未来发展的必然趋势吗?以后人工智能技术真的能达到电影里机器人的智能水平吗...
    ZLLZ阅读 3,778评论 0 5
  • 首先介绍下自己的背景: 我11年左右入市到现在,也差不多有4年时间,看过一些关于股票投资的书籍,对于巴菲特等股神的...
    瞎投资阅读 5,727评论 3 8
  • ![Flask](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAW...
    极客学院Wiki阅读 7,247评论 0 3