主题
演示投屏
在智能投屏场景中,通过接入在线预览编辑服务,可以轻松实现对演示文稿的播放、控制等功能。
快速接入
在 webview 环境下,集成最新版本的 js-sdk 代码,生成 sdk 实例并挂载到目标容器中,即可对目标文稿进行快速预览。完整的接入流程请参考快速开始。
控件集成
投屏场景中,不仅要实现对演示文稿的预览,还需要能够与文稿进行一些简单的交互。用户通过应用提供的功能控件,对文稿进行播放、暂停、翻页等常见操作。依托于强大的演示 API,我们能轻而易举的实现这些功能。
这里我们列举一些常见的演示文稿操作:
示例
参考代码
<template>
<div class="demo">
<div ref="webofficeEl" class="weboffice__wrapper"></div>
<ul class="menu">
<li class="menu__item" @click="onPlay">播放</li>
<li class="menu__item" @click="onExit">退出</li>
<li class="menu__item" @click="onPre">上一页</li>
<li class="menu__item" @click="onNext">下一页</li>
<li class="menu__item" @click="onEnlarge">放大</li>
<li class="menu__item" @click="onShrink">缩小</li>
</ul>
</div>
</template>
<script lang="ts" setup>
import { onMounted, ref } from 'vue'
let instance
const webofficeEl = ref()
onMounted(() => {
import('../../../../public/web-office-sdk-v1.1.19.es').then(WebOfficeSDK => {
instance = WebOfficeSDK.config({
url: 'https://www.kdocs.cn/l/coJJmHKeHdjd',
mount: webofficeEl.value,
mode: 'simple',
wordOptions: {
isShowDocMap: false, // 是否开启目录功能,默认开启
isBestScale: true // 打开文档时,默认以最佳比例显示
}
})
})
})
async function onPlay() {
await instance.ready()
// 进入幻灯片播放模式
instance.Application.ActivePresentation.SlideShowSettings.Run()
}
async function onExit() {
await instance.ready()
instance.Application.ActivePresentation.SlideShowWindow.View.Exit()
}
async function onPre() {
await instance.ready()
const app = instance.Application
// 切换到 PPT 全屏播放状态
await app.ActivePresentation.SlideShowSettings.Run()
// 切换到下一步动画
app.ActivePresentation.SlideShowWindow.View.GotoPreClick()
}
async function onNext() {
await instance.ready()
const app = instance.Application
// 切换到 PPT 全屏播放状态
await app.ActivePresentation.SlideShowSettings.Run()
// 切换到下一步动画
app.ActivePresentation.SlideShowWindow.View.GotoNextClick()
}
async function onEnlarge() {
await instance.ready()
const app = instance.Application
// 文档窗口对象
const activeWindow = app.ActiveWindow
// 视图对象
const view = activeWindow.View
const zoom = await view.Zoom
// 设置窗口缩放比例
view.Zoom = zoom + 20
}
async function onShrink() {
await instance.ready()
const app = instance.Application
// 文档窗口对象
const activeWindow = await app.ActiveWindow
// 视图对象
const view = await activeWindow.View
// 获取窗口缩放比例
const zoom = await view.Zoom
// 设置窗口缩放比例
view.Zoom = zoom - 20
}
</script>
<style scoped>
.demo {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 997;
background-color: #fff;
}
.weboffice__wrapper {
height: 100%;
}
.menu {
position: absolute;
left: 50%;
bottom: 10%;
transform: translateX(-50%);
display: flex;
justify-content: space-around;
align-items: center;
}
.menu__item {
display: flex;
align-items: center;
justify-content: center;
width: 100px;
height: 100px;
cursor: pointer;
background-color: rgba(0, 0, 0, 0.4);
border-radius: 50%;
}
.menu__item:hover,
.menu__item:active {
background-color: rgba(0, 0, 0, 0.5);
}
.menu__item + .menu__item {
margin-left: 12px;
}
</style>