金格WebOffice2015-----vue项目

简介: 金格WebOffice2015-----vue项目

下载

官网地址:http://www.goldgrid.com/jinge_download/index.aspx?num=5

image.png

解压后的文件image.png

  • js文件中有两个重要的js文件iWebOffice2015.jsWebOffice.js
  • WebOffice.js是WebOffice2015对象的一些方法。
  • iWebOffice2015.js是根据不同的浏览器环境来渲染<object>

image.png

安装插件

  • 安装iWebOfiice2015.msi

image.png

实现

iWebOffice2015.jsWebOffice.js放入static目录下

image.png

index.html中引入WebOffice.js

image.png

修改iWebOffice2015.js

官网iWebOffice2015.js源文件在下面截图处少了一个闭合标签,如下图添加

image.png

由于异步加载不允许使用document.write方法,这里注释掉document.write(str)

image.png

  • 【可选操作】,注释浏览器判断,这里由于未写入文档流,所以获取一些属性是出错的,如document.getElementById("WebOffice").type,注释掉就可以
/*注释以下代码*/
/*if ((window.ActiveXObject != undefined) || (window.ActiveXObject != null) || "ActiveXObject" in window) {
} else {
  if (browser == "firefox") {
    if(version < "52"){
      var fireFoxType = navigator.mimeTypes["application/kg-activex"];
      if (fireFoxType == undefined) {
        document.getElementById("WebOffice").width = "1px";
        var str='<div width="100%" height="100%" style="text-align:center; color: red;font-size:30px;" >该插件不受支持</br>点击跳转解决方案</div>';
        var t = document.getElementById("OfficeDiv");
        t.innerHTML = t.innerText + str;
      }
    }else{
      document.getElementById("WebOffice").width = "1px";
      var str='<div width="100%" height="100%" style="text-align:center;color: red;font-size:30px;" >该插件不受支持</br>请更换52版本以下的FireFox浏览器</div>';
      var t = document.getElementById("OfficeDiv");
      t.innerHTML = t.innerText + str;
    }
  }else if(browser == "chrome"){
     var kgchromeType = navigator.mimeTypes["application/kg-plugin"]; //高级版
     var chromeType = navigator.mimeTypes["application/kg-activex"]; //标准版
     var oldChromeType = navigator.mimeTypes["application/iWebPlugin"]; //早期淘汰版本
     if(document.getElementById("WebOffice").type == "application/kg-plugin"){
       if (kgchromeType == undefined) {
         document.getElementById("WebOffice").width = "1px";
         var str='<div width="100%" height="100%" style="text-align:center; color: red;font-size:30px;" >该插件不受支持</br>引用的是高级版控件</br></div>';
         var t = document.getElementById("OfficeDiv");
         t.innerHTML = t.innerText + str;
         //window.open("Faq002.html");
       }  
     }else{
       if(version > "45"){
         if (chromeType == undefined || oldChromeType == undefined) {
           document.getElementById("WebOffice").width = "1px";
           var str='<div width="100%" height="100%" style="text-align:center;color: red;font-size:30px;" >该插件不受支持</br>引用的是标准版控件</br></div>';
           var t = document.getElementById("OfficeDiv");
           t.innerHTML = t.innerText + str;
         }  
       }else{
         document.getElementById("WebOffice").width = "1px";
         var str='<div width="100%" height="100%" style="text-align:center;color: red;font-size:30px;" >标准版插件不受支持</br>请更换45版本以下的Chrome浏览器</br>如果需要使用高版本Chrome浏览器,需集成高级版插件</div>';
         var t = document.getElementById("OfficeDiv");
         t.innerHTML = t.innerText + str;
       }
     }
  }
}
*/

iWebOffice2015.js末尾将拼接好的字符串暴露出来

image.png

代码示例

vue文件中import引入iWebOffice2015.js

initWebOffice通过创建vue实例手动挂载来渲染<object>,将刚才暴露出来的<object>加载到office

initWebOfficeObject中的关键点是this.webOfficeObj.CreateFile(),创建一个空白的文档


//////

<template>
  <div style="width:100%;height:100%;">
    <div id="office"></div>
  </div>
</template>
<script>
  import Vue from 'vue';
  import webOfficeTpl from '../../../../../static/webOffice/iWebOffice2015.js';
  export default {
    data() {
      return {
        webOffice: null,
        webOfficeObj: null
      }
    },
    beforeCreate(){
    },
    mounted(){
      console.log(webOfficeTpl);
      this.$nextTick(() => {
        this.initWebOffice();
        this.initWebOfficeObject();
      })
    },
    beforeDestroy() {
    },
    methods: {
      initWebOffice() {
        this.webOffice = new Vue({
          template: webOfficeTpl
        }).$mount('#office');
      },
      initWebOfficeObject() {
        this.webOfficeObj = new WebOffice2015();
        this.webOfficeObj.setObj(document.getElementById('WebOffice'));
        try{
          //this.webOfficeObj.ServerUrl = "http://www.kinggrid.com:8080/iWebOffice2015/OfficeServer";
          //this.webOfficeObj.RecordID = "1551950618511";  //RecordID:本文档记录编号
          this.webOfficeObj.UserName = "XXX";
          this.webOfficeObj.FileName = "Mytemplate.doc";
          this.webOfficeObj.FileType = ".doc"; //FileType:文档类型  .doc  .xls
          this.webOfficeObj.ShowWindow = false; //显示/隐藏进度条
          this.webOfficeObj.EditType = "1"; //设置加载文档类型 0 锁定文档,1无痕迹模式,2带痕迹模式
          this.webOfficeObj.ShowMenu = 1;
          this.webOfficeObj.ShowToolBar = 0;
          this.webOfficeObj.SetCaption(this.webOfficeObj.UserName + "正在编辑文档"); // 设置控件标题栏标题文本信息
          //参数顺序依次为:控件标题栏颜色、自定义菜单开始颜色、自定义工具栏按钮开始颜色、自定义工具栏按钮结束颜色、
          //自定义工具栏按钮边框颜色、自定义工具栏开始颜色、控件标题栏文本颜色(默认值为:0x000000)
          if (!this.webOfficeObj.WebSetSkin(0xdbdbdb, 0xeaeaea, 0xeaeaea, 0xdbdbdb, 0xdbdbdb, 0xdbdbdb, 0x000000)) {
            alert(this.webOfficeObj.Status);
          }    //设置控件皮肤
          if(this.webOfficeObj.WebOpen()) {
            // StatusMsg(WebOfficeObj.Status);
          }
          this.webOfficeObj.AppendMenu("1","打开本地文件(&L)");
          this.webOfficeObj.AppendMenu("2","保存本地文件(&S)");
          this.webOfficeObj.AppendMenu("3","-");
          this.webOfficeObj.AppendMenu("4","打印预览(&C)");
          this.webOfficeObj.AppendMenu("5","退出打印预览(&E)");
          this.webOfficeObj.AddCustomMenu();
          this.webOfficeObj.HookEnabled();
          this.webOfficeObj.CreateFile() // 根据FileType设置的扩展名来创建对应的空白文档
        }
        catch(e){
          console.log("catch");
          console.log(e.description);
        }
      }
    }
  }
</script>
<style lang="less">
</style>

通过控制台可查看<object>

image.png

效果

image.png

注:遇到错误可参考

如浏览器打开提示不支持插件,先核实是否安装了iWebOfiice2015.msi,如已安装,打开这里的企业应用浏览器进行测试

image.png

启动KGPMSYS服务

image.png

相关文章
|
9月前
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
471 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
JavaScript 数据可视化
vue-cli学习一:vue脚手架的 vue-cli2和vue-cli3版本 创建vue项目,vue的初始化详解
这篇文章介绍了如何使用vue-cli 2和3版本来创建Vue项目,并详细说明了两者之间的主要区别。
350 5
vue-cli学习一:vue脚手架的 vue-cli2和vue-cli3版本 创建vue项目,vue的初始化详解
|
JavaScript 容器
乾坤qiankun框架搭建 主应用为vue3的项目。
乾坤qiankun框架搭建 主应用为vue3的项目。
712 2
|
6月前
|
JavaScript 前端开发 UED
Vue 项目中如何自定义实用的进度条组件
本文介绍了如何使用Vue.js创建一个灵活多样的自定义进度条组件。该组件可接受进度段数据数组作为输入,动态渲染进度段,支持动画效果和内容展示。当进度超出总长时,超出部分将以红色填充。文章详细描述了组件的设计目标、实现步骤(包括props定义、宽度计算、模板渲染、动画处理及超出部分的显示),并提供了使用示例。通过此组件,开发者可根据项目需求灵活展示进度情况,优化用户体验。资源地址:[https://pan.quark.cn/s/35324205c62b](https://pan.quark.cn/s/35324205c62b)。
252 0
|
10月前
|
人工智能 JavaScript 关系型数据库
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
369 14
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
|
10月前
|
前端开发 JavaScript Java
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
500 13
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
|
10月前
|
SQL JavaScript 安全
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
423 11
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
|
10月前
|
人工智能 JavaScript 安全
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
449 13
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
|
9月前
|
资源调度 JavaScript 前端开发
Pinia 如何在 Vue 3 项目中进行安装和配置?
Pinia 如何在 Vue 3 项目中进行安装和配置?
665 4
|
10月前
|
监控 JavaScript 前端开发
ry-vue-flowable-xg:震撼来袭!这款基于 Vue 和 Flowable 的企业级工程项目管理项目,你绝不能错过
基于 Vue 和 Flowable 的企业级工程项目管理平台,免费开源且高度定制化。它覆盖投标管理、进度控制、财务核算等全流程需求,提供流程设计、部署、监控和任务管理等功能,适用于企业办公、生产制造、金融服务等多个场景,助力企业提升效率与竞争力。
612 12