会议

本文介绍使用演示文档时如何获取页码、保存文件和开启自动播放等。

重要

JS-SDK V1.1.15及以上版本支持该功能。

标注

打开标注工具栏

  • 语法

    表达式.ActivePresentation.SlideShowWindow.View.MarkerEditVisible

    表达式:文档类型应用对象

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
      
      //获取窗口对象
      const SlideShowWindow = await app.ActivePresentation.SlideShowWindow;
    
      //获取视图对象
      const view = await SlideShowWindow.View;
    
      //打开标注工具栏
      view.MarkerEditVisible = true;
    
      setTimeout(() => {
        //3000 ms后关闭标注工具栏
        view.MarkerEditVisible = false;
      }, 3000)
    
    }

显示标注内容

  • 语法

    表达式.ActivePresentation.SlideShowWindow.View.PointerVisible

    表达式:文档类型应用对象

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
      
      //获取窗口对象
      const SlideShowWindow = await app.ActivePresentation.SlideShowWindow;
    
      //获取视图对象
      const view = await SlideShowWindow.View;
    
      //监听标注内容是否显示事件
      app.Sub.SlideInkVisible = async (e) => {
        const { Data } = e;
        console.log(Data.showmark);
        
        setTimeout(() => {
          //3000 ms后设置标注内容的显示隐藏
          view.PointerVisible = !Data.showmark;
        }, 3000)
        
    
      }
    
    }

监听显示标注事件

  • 语法

    表达式.Sub.SlideInkVisible = eventHandle

    表达式:文档类型应用对象

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
    
      //获取窗口对象
      const SlideShowWindow = await app.ActivePresentation.SlideShowWindow;
    
      //获取视图对象
      const view = await SlideShowWindow.View
      
      //监听是否显示标注内容
      app.Sub.SlideInkVisible = ({Data}) => {
        console.log('监听是否显示标注内容:', Data);
    
        if(Data.showmark){
          setTimeout(() => {
            view.PointerVisible = false;
          }, 2000)
          
        }
      };
    }

播放

播放幻灯片

  • 语法

    表达式.ActivePresentation.SlideShowWindow.View.Play(slideIndex, animateIndex)

    表达式:文档类型应用对象

  • 参数

    属性

    数据类型

    描述

    slideIndex

    Number

    当前幻灯片的下标。

    animateIndex

    Number

    当前幻灯片动画的下标。

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
      
      //获取Slide设置对象
      const SlideShowSettings = await app.ActivePresentation.SlideShowSettings;
      //进入幻灯片播放模式
      await SlideShowSettings.Run();
    
      //获取窗口对象
      const SlideShowWindow = await app.ActivePresentation.SlideShowWindow;
    
      //获取视图对象
      const view = await SlideShowWindow.View;
    
      //从第一张幻灯片的第一个动画开始播放
      await view.Play(1, 1);
    }

跳转幻灯片动画

  • 语法

    表达式.ActivePresentation.SlideShowWindow.View.GotoClick(number)

    表达式:文档类型应用对象

  • 参数

    属性

    数据类型

    描述

    number

    Number

    当前幻灯片动画的下标。

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
      
      //获取Slide设置对象
      const SlideShowSettings = await app.ActivePresentation.SlideShowSettings;
      //进入幻灯片播放模式
      await SlideShowSettings.Run();
    
      //获取窗口对象
      const SlideShowWindow = await app.ActivePresentation.SlideShowWindow;
    
      //获取视图对象
      const view = await SlideShowWindow.View;
    
      //执行跳转幻灯片第二个动画
      await view.GotoClick(2);
    }

禁止翻页

  • 语法

    表达式.ActivePresentation.SlideShowWindow.View.IsBanSlideChange

    表达式:文档类型应用对象

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
      
      //获取窗口对象
      const SlideShowWindow = await app.ActivePresentation.SlideShowWindow;
    
      //获取视图对象
      const view = await SlideShowWindow.View;
    
      //禁止翻页
      view.IsBanSlideChange = true;
    
      setTimeout(() => {
        //3000 ms后允许翻页
        view.IsBanSlideChange = false;
      }, 3000)
    
    
    }

停止自动翻页

  • 语法

    表达式.ActivePresentation.SlideShowWindow.View.StopAutoPlay()

    表达式:文档类型应用对象

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application; 
      
      //获取Slide设置对象
      const SlideShowSettings = await app.ActivePresentation.SlideShowSettings;
    
      //进入幻灯片播放模式
      await SlideShowSettings.Run();
    
      //关闭自动播放
      await SlideShowSettings.StopAutoPlay();
    }

预览模式

  • 语法

    表达式.ActivePresentation.SlideShowWindow.View.CoreReadonly

    表达式:文档类型应用对象

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
      
      //获取窗口对象
      const SlideShowWindow = await app.ActivePresentation.SlideShowWindow;
    
      //获取视图对象
      const view = await SlideShowWindow.View;
    
      view.CoreReadonly = true;
    
    }

设置全屏

  • 语法

    表达式.ActivePresentation.SlideShowWindow.IsFullScreen

    表达式:文档类型应用对象

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
      
      //获取窗口对象
      const SlideShowWindow = await app.ActivePresentation.SlideShowWindow;
    
      //设置全屏
      SlideShowWindow.IsFullScreen = true;
    
      setTimeout(() => {
        //3000 ms后退出全屏
        SlideShowWindow.IsFullScreen = false;
      }, 3000)
    
    
    }

监听播放状态

  • 语法

    表达式.Sub.SlidePlayerChange = eventHandle

    表达式:文档类型应用对象

  • 示例

    //@file=base.ppt
    async function example() {
      await instance.ready();
    
      const app = instance.Application;
      
      //监听播放状态改变
      app.Sub.SlidePlayerChange = ({Data}) => {
        console.log('监听 播放状态改变:', Data);
      };
    }

监听视频播放状态

  • 语法

    表达式.Sub.SlideMediaChanged = eventHandle

    表达式:文档类型应用对象

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
      
      //监听视频播放状态改变
      app.Sub.SlideMediaChanged = ({Data}) => {
        console.log('监听视频播放状态改变:', Data);
      };
    }

观众同步视频播放信息

  • 语法

    表达式.ActivePresentation.SlideShowWindow.View.SetMediaObj(Data)

    表达式:文档类型应用对象

  • 参数

    属性

    数据类型

    描述

    Data

    Object

    视频播放信息。

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
    
      //获取窗口对象
      const SlideShowWindow = await app.ActivePresentation.SlideShowWindow;
    
      //获取视图对象
      const view = await SlideShowWindow.View;
      
      //设置视频播放改变监听事件
      app.Sub.SlideMediaChanged = async (e) => {
        const { Data } = e;
        console.log(Data);
    
        //同步视频播放信息
        await view.SetMediaObj(Data);
      }
     
    }

设置销毁视频播放工具(移动端)

  • 语法

    表达式.ActivePresentation.SlideShowWindow.View.DestroyMediaPlayer()

    表达式:文档类型应用对象

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
    
      //获取窗口对象
      const SlideShowWindow = await app.ActivePresentation.SlideShowWindow;
    
      //获取视图对象
      const view = await SlideShowWindow.View;
      
      //设置视频播放改变监听事件
      app.Sub.SlideMediaChanged = async (e) => {
        const { Data } = e;
        console.log(Data);
        setTimeout(async () => {
          //3000 ms后销毁视频播放工具
          await view.DestroyMediaPlayer(Data);
        }, 3000); 
      }
    }

激光笔

同步激光笔信息

  • 语法

    表达式.ActivePresentation.SlideShowWindow.View.SetLaserPenData(Data)

    表达式:文档类型应用对象

  • 参数

    属性

    数据类型

    描述

    Data

    Object

    激光笔信息。

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
    
      //获取窗口对象
      const SlideShowWindow = await app.ActivePresentation.SlideShowWindow;
    
      //获取视图对象
      const view = await SlideShowWindow.View;
      
      //设置发送激光笔的墨迹监听事件
      app.Sub.SlideLaserPenInkPointsChanged = async (e) => {
        const { Data } = e;
        console.log(Data);
    
        //同步激光笔信息
        await view.SetLaserPenData(Data);
      }
     
    }

监听发送激光笔的墨迹

  • 语法

    表达式.Sub.SlideLaserPenInkPointsChanged = eventHandle

    表达式:文档类型应用对象

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
      
      //监听发送激光笔的墨迹
      app.Sub.SlideLaserPenInkPointsChanged = ({Data}) => {
        console.log('监听发送激光笔的墨迹:', Data);
      };
    }

监听是否使用激光笔和标注

  • 语法

    表达式.Sub.SlideInkToolbarVisible = eventHandle

    表达式:文档类型应用对象

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
    
      //获取窗口对象
      const SlideShowWindow = await app.ActivePresentation.SlideShowWindow;
    
      //获取视图对象
      const view = await SlideShowWindow.View
      
      //监听是否使用激光笔和标注
      app.Sub.SlideInkToolbarVisible = ({Data}) => {
        console.log('监听是否使用激光笔和标注:', Data);
    
      };
    
      //设置标记工具栏出现
      view.MarkerEditVisible = true;
    }

设置指定工具栏是否隐藏

  • 语法

    表达式.ActivePresentation.SlideShowWindow.View.SetToolVisible(toolName, flag)

    表达式:文档类型应用对象

  • 参数

    属性

    数据类型

    描述

    toolName

    String

    需要操作的tool的名称。

    flag

    Boolean

    是否隐藏指定的tool。取值范围如下:

    • false:隐藏。

    • true:显示。

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
      
      //获取Slide设置对象
      const SlideShowSettings = await app.ActivePresentation.SlideShowSettings;
      //进入幻灯片播放模式
      await SlideShowSettings.Run();
    
      //获取窗口对象
      const SlideShowWindow = await app.ActivePresentation.SlideShowWindow;
    
      //获取视图对象
      const view = await SlideShowWindow.View;
    
      const linkTip = app.Enum.PpToolType.pcPlayHoverLink //hover超链接
      const imageTip = app.Enum.PpToolType.pcImageHoverTip //hover图片
      const menu = app.Enum.PpToolType.pcPlayingMenu //右键菜单 
    
      //2000 ms后设置隐藏
      setTimeout(() => {
        //设置进入播放模式后隐藏指定的tool
        view.SetToolVisible(linkTip, false);
        view.SetToolVisible(imageTip, false);
        view.SetToolVisible(menu, false);
      }, 2000)
    }

会议同步

监听文档操作变化

  • 语法

    表达式.ApiEvent.AddApiEventListener('OnDocViewChange', ({ Data, Type, UserActive }) => { console.log('OnDocViewChange') })

    表达式:文档类型应用对象

  • 参数

    属性

    数据类型

    说明

    Data

    Object

    文档操作变化信息

    Type

    String

    文档操作变化类型

    UserActive

    Boolean

    是否为当前用户操作触发(观众端可据此判断是否需要脱离同步)

  • 示例

    async function example() {
      await instance.ready();
    
      const apiEvent = instance.ApiEvent;
    
      apiEvent.AddApiEventListener('OnDocViewChange', (e) => {
        console.log('监听文档操作变化:', e);
      });
    }

观众同步文档操作内容

  • 语法

    表达式.SetDocView({ Type, Data })

    表达式:文档类型应用对象

  • 参数

    同步内容参数通过监听文档操作变化获取

属性

数据类型

说明

Type

String

文档操作变化类型

Data

Object

文档操作变化信息

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
      const apiEvent = instance.ApiEvent;
    
      apiEvent.AddApiEventListener('OnDocViewChange', (Data) => {
        console.log('监听文档操作变化:', Data);
    
        // 同步文档操作
        app.SetDocView(Data);
      });
     
    }

获取当前文档操作状态

  • 语法

    表达式.DocViewState

    表达式:文档类型应用对象

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
      const apiEvent = instance.ApiEvent;
    
      // 监听文档操作变化
      apiEvent.AddApiEventListener('OnDocViewChange', (e) => {
        console.log('监听文档操作变化:', e);
      });
    
      // 获取文档操作状态
      const docViewState = await app.DocViewState;
    }

会议同步演讲者端示例

  • 演讲者端的主要场景:

    1.对演讲者的文档操作进行监听,获取操作信息实时同步至观众端 。

    2.获取演讲者当前的文档操作状态,同步至初次进入会议或脱离同步后需再次跟随同步的观众。

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
      const apiEvent = instance.ApiEvent;
    
      // 观众端同步
      const sendMessage = (Data) => {
        // 需要通过开发者提供的信息发送方式将当前演讲者端信息发送至观众端
        console.log('发送至观众端同步', Data);
      }
    
      // 实时同步
      apiEvent.AddApiEventListener('OnDocViewChange', (Data) => {
        console.log('监听文档操作变化:', Data);
    
        sendMessage(Data);
      });
    
      // 需初始化同步或重新跟随同步
      const docViewState = await app.DocViewState;
      sendMessage(docViewState);
    }

会议同步观众端示例

  • 观众端的主要场景:

    1.同步演讲者端发送的同步信息(包括同步实时信息和初始化信息)。

    2.判断当前是否需要脱离同步。

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
      const apiEvent = instance.ApiEvent;
    
      // 开发者将演讲者端的操作信息发送至观众端
      onMessage((Data) => {
        // 同步演讲者端发送的同步信息
        app.SetDocView(Data);
      })
    
      // 脱离同步
      apiEvent.AddApiEventListener('OnDocViewChange', (Data) => {
        console.log('监听文档操作变化:', Data);
    
        // 当前用户主动操作文档时,可根据 UserActive 判断是否需要脱离同步
        if (Data.UserActive) {
            console.log('脱离同步');
        }
      });
    }