vue3+webOffice合集

1、webOffice 初始化

1)officeType:

文档位置:https://solution.wps.cn/docs/web/quick-start.html#officetype

2)appId: 前端使用appId 后端需要用到AppSecret

3)fileId: 由后端返回,前端无法生成 ,与上传文件生成的文件id无关

4)mount: 前端挂载的div

5)mode: 显示模式,nomal为普通模式,simple为极简模式

文档位置:https://solution.wps.cn/docs/web/config.html#显示模式

6)wordOptions: 其他配置

文档位置:https://solution.wps.cn/docs/web/config.html#文字选项

javascript 复制代码
//注意:这里一定要设置宽高,否则不会显示
 <div id='wps' ref='wpsRef' style="width:600px;height:500px"></div>
 	
 const init = async ()=>{
 	const ele = document.getElementById('wps') 
    const instance = await webOfficeSDK.init({
      officeType: 'w', 
      appId: 'xxxx',  
      fileId: '2',
      mount: ele,
      mode: 'simple',
      wordOptions: {
        isShowDocMap: false,  //是否开启目录功能
        isBestScale: true  //打开文档默认以最佳比例显示
      } 
    })
    //注意:一定要等到ready完才做其他的操作 不然会出现模块未定义或找不到
    const ready = await this.instance.ready()
    if(ready){
      ...
      return ture
     }
     return false
   }


//初始化
onMounted(async()=>{
	const res = await init()
	if(res){
		// 其他操作 例如 请求接口数据回显到下拉组件
	}
})

2、修改wps的宽度样式

1)需求描述:与官方案例类似 ,但是需要添加一个收缩/展示按钮,当右侧表单收缩时,左侧的文档宽度应为100%,当右侧表单展示时,左侧文档恢复原样

2)实现思路

  • 左侧div设置固定的宽度和高度,例如80%,且div里面放挂载wps的div,右侧表单设置固定宽度和高度,例如20%,根据按钮的显示隐藏动态设置其宽度
javascript 复制代码
<div :style="flg?'width:80%':'width:100%'">
	<div id='wps' style="width:100%;height:100%"></div>
</div>
<div :style="flg?'width:20%':'width:0%'">
	<div id='wps'></div>
</div>

注意:按钮控件可以控制外层div的宽度动态变化,无法控制wps的宽度变化,需要使用到实例对象值的iframe对象

文档位置:https://solution.wps.cn/docs/web/instance.html

  • 设置iframe
javascript 复制代码
//上面初始化时有个ready状态
const iframe = ref(null)
 
if(ready){
 iframe = await instance.iframe
 return ture
}
//当按钮点击时(不管是收缩还是展开都设置为100%且文档自适应)
iframe.style.width = "100%"
//app 也是在ready后面获取 可参考官方文档
app.ActiveDocument.ActiveWindow.View.Zoom.Percentage = 100 //设置窗口缩放比例
app.ActiveDocument.ActiveWindow.View.Zoom.PageFit = 2  //缩放视图自适应文档窗口的尺寸
相关推荐
m0_740043731 小时前
3、Vuex-Axios-Element UI
前端·javascript·vue.js
鹏北海2 小时前
微信扫码登录 iframe 方案中的状态拦截陷阱
前端·javascript·vue.js
狗哥哥2 小时前
Vite 插件实战 v2:让 keep-alive 的“组件名”自动长出来
前端·vue.js·架构
小黑的铁粉2 小时前
Vue2 vs Vue3
vue.js
AAA阿giao2 小时前
代码宇宙的精密蓝图:深入探索 Vue 3 + Vite 项目的灵魂结构
前端·javascript·vue.js
半桶水专家2 小时前
vue中的props详解
前端·javascript·vue.js
前端不太难2 小时前
RN 遇到复杂手势(缩放、拖拽、旋转)时怎么设计架构
javascript·vue.js·架构
白兰地空瓶2 小时前
一行 npm init vite,前端工程化的世界就此展开
前端·vue.js·vite
码力巨能编2 小时前
Markdown 作为 Vue 组件导入
前端·javascript·vue.js
仰望.3 小时前
vue 甘特图 vxe-gantt table 拖拽任务调整开始日期和结束日期的使用,拖拽任务调整日期
vue.js·甘特图·vxe-ui