Netless

Netless

  • 通用文档
  • 常见问题
  • JavaScript
  • Android
  • iOS
  • Server
  • GitHub
  • 🇬🇧 English

›功能介绍

接入准备

  • 前提条件
  • 开源项目
  • 快速调试
  • 版本历史

快速开始

  • 原生 JavaScript
  • React

进阶教程

  • 安装
  • 实时房间
  • 教具
  • PPT 与页面管理
  • 视角
  • 禁止操作
  • 自定义行为
  • 回放

初始化参数

  • SDK参数
  • 房间参数
  • 回放参数

功能介绍

  • 教具操作
  • 视角操作
  • 页面(场景)管理
  • 状态监听
  • 白板操作
  • 自定义事件
  • 鼠标位置同步
  • 文档转换
  • 回放功能
  • 大课只读
  • 撤回与重做
  • 集成白板插件

迁移与升级

  • 2.9.0 迁移指南
  • 2.8.0 迁移指南

文档转换

前提条件

sdk 服务器提供两种方式将大部分文档转换成白板可用的资源:

  1. 文档转图片:word,pdf,ppt,pptx——静态转换
  2. 文档转网页:pptx——动态转换

请确保在console 开启对应转换服务。

转换任务

转换服务实际上是几个网络请求拼接,将网络可见地址传给 sdk服务器,并轮询请求。
SDK 内部,已经将转换任务处理封装成了pptConverter类,开发者无需关心与 sdk 端交互,对于动静态转换,也只需要确认传入的 url 文件类型以及转换类型匹配即可。

Typescript 方法签名

export type PptConvertParams = {
    //转换资源地址
    readonly url: string;
    //转换类型
    readonly kind: PptKind;
    //上传回调,可选参数。转换进度,范围:0-1。
    readonly onProgressUpdated?: (progress: number) => void;
    //进度检查频率,毫秒。可选参数,默认 1.5 秒。
    readonly checkProgressInterval?: number;
    //超时时间,毫秒。可选参数,默认 5 分钟。
    readonly checkProgressTimeout?: number;
};

//转换任务类型
export enum PptKind {
    //静态,word,ppt,pdf,pptx
    Static = "static",
    //动态,pptx 转网页
    Dynamic = "dynamic",
}

//白板页面结构
export type SceneDefinition = {
    readonly name?: string;
    readonly ppt?: PptDescription;
};

//白板背景图(ppt)结构
export type PptDescription = {
    readonly src: string;
    readonly width: number;
    readonly height: number;
};

//转换结果
export type Ppt = {
    readonly uuid: string;
    readonly kind: PptKind;
    readonly width: number;
    readonly height: number;
    readonly slideURLs: ReadonlyArray<string>;
    //白板页面(场景)数组,格式已匹配,可以直接调用 room 的 putScenes API插入白板页面
    readonly scenes: ReadonlyArray<SceneDefinition>;
};

//转换接口
export interface PptConverter {
    convert(params: PptConvertParams): Promise<Ppt>;
}

示例代码

import {WhiteWebSdk} from "white-web-sdk";
const whiteWebSdk = new WhiteWebSdk();
// roomToken 鉴权使用
const pptConverter = whiteWebSdk.pptConverter("输入 roomToken");
// 请求转码,获得每一个页面的数据
res = await pptConverter.convert({
    // 需要进行转换资源的网络地址,请确保可以正常访问
    url: pptURL,
    // 转换类型
    kind: "static" | "dynamic",
    // 转换进度监听
    onProgressUpdated: progress => {
      console.log(progress);
    },
    checkProgressInterval: 1500,
    checkProgressTimeout: 5 * 60 * 1000,
});

// 如果对新增的白板页面中,图片大小不满意,可以自己重新构建一个 scenes 数组,修改其中宽高

// 关于 putScenes,setScenePath 的更多信息,请阅读[页面(场景)管理]文档
// 将转换结果都塞进 ppt 目录中。如果要在一个房间中,插入多个转换任务,请取不同目录名称
room.putScenes(`/ppt`, res.scenes);
// put API 只是新增白板,并不会主动切换,需要通过 setAPI,主动设置到精确路径.
room.setScenePath(`/ppt/${res.scenes[0].name}`);

动态 PPT API

动画前进后退

通过以下 API,来控制动态 ppt 页面动画。

room.pptNextStep(); // 下一步(下一页)
room.pptPreviousStep() // 上一步(上一页)

当当前页面的 ppt 动画已经全部执行完毕,再次调用 room.pptNextStep 时,会自动进入下一页动态 ppt 页面。room.pptPreviousStep() 效果类似。

自定义字体

pptx中,如果包含了非常规字体(付费字体),开发者可以在初始化时,配置自定义字体映射来支持。
该 API 需要一个网络地址,开发者需要将字体文件上传到开发者自己的业务服务器或云存储中。然后在初始化sdk时,传入fonts字段。

const whiteWebSdk = new WhiteWebSdk({
  appIdentifier: "{{appIdentifier}}"
  // ...其他配置项
  fonts: {
    "Calibri": "https://your-cdn.com/Calibri.ttf",
    "宋体": "https://your-cdn.com/Songti.ttf",
    "楷体": "https://your-cdn.com/Kaiti.ttf",
 },
});

动态 PPT 音视频回调

动态 ppt 内的音视频在播放时会有回调通知用户,回调方法在作为参数在加入房间时传入,包括:

onPPTMediaPlay
onPPTMediaPause
onPPTMediaPlayError

具体方法签名请参考:

onPPTMediaPlay

onPPTMediaPause

onPPTMediaPlayError

Last updated on 7/28/2020 by az
← 鼠标位置同步回放功能 →
  • 前提条件
  • 转换任务
    • Typescript 方法签名
    • 示例代码
  • 动态 PPT API
    • 动画前进后退
    • 自定义字体
  • 动态 PPT 音视频回调
Netless
接入即互动
产品
管理控制台官网网站Demo 体验Github
公司
加入我们服务条款隐私协议
联系方式
support@netless.link社区
Copyright © 2020 Netless