前端实现在线预览、编辑Office文档(vue版)

这篇具有很好参考价值的文章主要介绍了前端实现在线预览、编辑Office文档(vue版)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用插件:Spire.Cloud在线Office文档编辑器(官网:冰蓝科技在线编辑)
无需安装,在 index.html 里面引入即可

重点:支持在线创建、编辑、保存和打印 Office (Word / Excel / PPT) 文档
助您轻松实现高效率、无纸化办公
vue word在线编辑,前端,vue,前端,vue.js,javascript

使用浏览器打开:https://cloud.e-iceblue.cn/,点击右上角头像注册/登录账号。
其次,点击菜单栏“我的应用”创建应用,获取APP ID和APP Key。

(个人理解:动态切换链接不刷新页面时显示不出来的,刷新页面才可以,错误是因为id为iframeEditor得div被替换成了ifarme,切换地址后找不到这个div,无法所以动态切换链接会报错)

<div class="reportbox">
      <a-form :layout="formLayout">
        <a-form-item>
          <a-select style="width: 180px" v-model="from.reportType">
            <a-select-option value="PeriodicAnalysis"> xxxxxxxxx报告 </a-select-option>
            <a-select-option value="FoulingAssessment"> xxxxxxxxxxxx报告 </a-select-option>
          </a-select>
        </a-form-item>
        <a-form-item :wrapper-col="{ span: 12, offset: 5 }">
          <a-button type="primary" @click="queryReport" style="width: 100px"> 查询 </a-button>
        </a-form-item>
      </a-form>
      <div id="div" style="height: auto" >
      //div动态创建
   </div>
      <div v-if="show" class="pdff">
        <a-empty />
      </div>
    </div>

前端JavaScript代码实现

  generateWord() {
      var docEditor
      const urlString = this.fileUrl
      const appid = ' 你的appid '
      const appkey = ' 你的appkey '

      const innerAlert = function (message) {
        if (console && console.log) console.log(message)
      }
      const onReady = function () {
        innerAlert('Document editor ready')
      }

      const onDocumentStateChange = function (event) {
        const title = document.title.replace(/\*$/g, '')
        document.title = title + (event.data ? '*' : '')
      }

      const onError = function (event) {
        if (event) innerAlert(event.data)
      }

      function ajax(options) {
        options = options || {}
        const method = (options.type || 'GET').toUpperCase()
        let url = options.url
        let queryString = null
        if (!url) return
        if (options.data) {
          queryString = []
          for (var attr in options.data) {
            queryString.push(attr + '=' + options.data[attr])
          }
          queryString = queryString.join('&')
        }
        if (method === 'GET' && queryString) {
          url += '?' + queryString
          queryString = ''
        }
        const xhr = new XMLHttpRequest()
        xhr.open(method, url, true)
        if (method === 'POST') xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
        xhr.send(queryString)
        xhr.onreadystatechange = function () {
          if (xhr.readyState === 4) {
            if (xhr.status === 200) {
              var data = xhr.responseText
              if (options.dataType === 'json') data = JSON.parse(data)
              options.success && options.success(data)
            } else {
              options.error && options.error(xhr.status)
            }
          }
        }
      }

      // 用于保存
      const callbackfn = function (result) {
        if (result && result.data) {
          const data = result.data
          let fileName = data[0]
          const url = data[1]
          if (fileName.indexOf('=') > -1) fileName = fileName.split('=')[1]
          ajax({
            url: '',
            type: 'post',
            data: { filename: fileName, fileuri: url },
            dataType: 'json',
            async: false,
            success: function (json) {
              if (json.code == 200 || json.code == '200') {
                alert('保存成功')
              } else {
                this.error(json, '保存失败')
              }
            },
            error: function (json, msg) {
              alert(+msg)
            },
          })
        }
      }
      docEditor = new SpireCloudEditor.OpenApi(
        'iframeEditor',
        {
          fileAttrs: {
            fileInfo: {
              name: this.fileName,  // this.fileName动态返回
              ext: 'docx',
              primary: String(new Date().getTime()),
              creator: '',
              createTime: new Date(),
            },
            sourceUrl: urlString,   // urlString动态返回
            createUrl: '',
            callbackUrl: '', This item can be empty, but only if the 'onSave' callback function must be defined in events. If the callback function is undefined and this item is empty, Cloud Editor will not provide save function.
            verification: null, //用户文件系统下载文件时若需要验证类似token的数据可以写在这里
            canEdit: true,
            canDownload: true,
            canForcesave: true,
          },
          user: {
            primary: '',
            name: '',
            canSave: true,
            customization: {
              public: {
                common: {
                  whiteLabel: false,
                  defaultZoom: 1,
                  openReviewChanges: false,
                  permGroups: ['everyone'], //限制编辑分组
                  viewVersion: false,
                  header: {
                    hideTitle: false,
                    defaultView: 'full',
                  },
                },
                word: null, //doc定制
                powerpoint: null, //ppt定制
                excel: null, //xls定制
              },
            },
          },
          editorAttrs: {
            //编辑器配置
            editorWidth: '100%',
            editorHeight: '900px',
            editorType: 'document', //编辑器类型,可不配置,程序根据文件类型获取,结果为 document,presentation,spreadsheet
            platform: 'desktop', //编辑器平台类型,可选desktop, mobile, embedded
            viewLanguage: 'zh', //平台界面展示语言可选en/zh
            canChat: true, //是否可聊天
            canComment: true, //是否可批注
            canReview: true,
            embedded: {
              saveUrl: '',
              embedUrl: '',
              shareUrl: '',
            },
            events: {
              onReady: onReady,
              onDocumentStateChange: onDocumentStateChange,
              onError: onError,
              onSave: callbackfn,
            },
          },
        },
        appid,
        appkey,
      )
    },
    queryReport(){
    this.updatdiv() //  动态生成div 每次条件改变的时候清除div,搜索的时候创建新的div
    // axios请求 根据实际情况!apiUrl请求地址(我的项目请求地址是第三方)
     axios.get(apiUrl, {
          headers: {
            Authorization: 'Bearer ' + sessionStorage.token,
          },
          params: pam,
        })
        .then((res) => {
          // console.log(res)
          this.fileUrl = res.data.data.downloadUrl
          this.fileName = res.data.data.fileName
          this.generateWord()  // 此处调用生成word
     
        })
        .catch((error) => {
          this.show = true
          console.log(error)
          this.spinning = false
        })
    }
 //  动态生成div
 updatdiv() {
      let div = document.querySelector('#div')
      var divChild = document.createElement('div') //一级
      var childDiv = document.createElement('div') // 二级
      childDiv.id = 'iframeEditor'
      divChild.appendChild(childDiv)
      div.innerHTML = ''
      div.appendChild(divChild)
    },

这样就解决了链接更改之后word显示还是旧的链接得问题!文章来源地址https://www.toymoban.com/news/detail-522081.html

到了这里,关于前端实现在线预览、编辑Office文档(vue版)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在线WebOffce在HTML/VUE/Electron纯前端网页编辑Office之打开Word后自动处于修订模式

    在线办公协同办公过程中,对于老板给出的文档修改,如果在错别字方面都要自己一个个字去看的话也太浪费时间了,其实word上就有一个修订模式,可以帮助大家高效完成文档的修改,在线WebOffce在HTML/VUE/Electron纯前端网页编辑Office之打开Word后自动处于修订模式? 第一步:下

    2024年01月21日
    浏览(40)
  • 前端js react vue怎么实现在线预览doc文档

    先说结论: 目前在纯前端层面没有很好的方案,基本都需要服务端的介入。 优点 :简单易用,无需配置 缺点 :文档需要支持外网访问,且文档会是公开可见的,所以对于一些内部敏感的文档来说,这个显然是不可行的。 需要后端介入配合 onlyoffice地址 这个也要先在服务器

    2024年02月15日
    浏览(61)
  • 文档在线预览(二)word、pdf文件转html以实现文档在线预览

    @ 目录 一、前言 1、aspose 2 、poi + pdfbox 3 spire 二、将文件转换成html字符串 1、将word文件转成html字符串 1.1 使用aspose 1.2 使用poi 1.3 使用spire 2、将pdf文件转成html字符串 2.1 使用aspose 2.2 使用 poi + pbfbox 2.3 使用spire 3、将excel文件转成html字符串 3.1 使用aspose 3.2 使用poi + pdfbox 3.3 使用

    2024年02月06日
    浏览(121)
  • 实现word文档在线编辑

    我们通过使用docker部署的onlyoffice来实现文档的预览编辑,做到实时保存 依次运行以下命令即可 注意: 1.http://ip:9000/web-apps/apps/api/documents/api.js 中ip问docker容器服务器地址 2.http://ip:port/file/2022/09/08/111.docx为文件源路径 3.http://ip:port/docx/save 为回调的后端地址 4. “key”: “16” 更

    2024年02月15日
    浏览(36)
  • 前端如何实现 Word 在线预览

    前端如何实现 Word 在线预览 在前端实现 Word 文件在线预览时,常用的方法包括使用第三方库、浏览器插件、后端服务器、在线文档转换平台等,具体如下: 使用第三方库 常见的前端第三方库包括 Mammoth.js、Docx.js、jsreport-docx 等。这些库可以将 Word 文件转换成 HTML 格式,再将

    2023年04月24日
    浏览(47)
  • 文档在线预览(四)将word、txt、ppt、excel、图片转成pdf来实现在线预览

    @ 目录 事前准备 1、需要的maven依赖 添加spire依赖(商用,有免费版,但是存在页数和字数限制,不采用spire方式可不添加) 2、后面用到的工具类代码: 一、word文件转pdf文件(支持doc、docx) 1、使用aspose方式 2、使用poi方式 3、使用spire方式 二、txt文件转pdf文件 三、PPT文件转

    2024年02月08日
    浏览(76)
  • 前端小程序,h5,浏览器,app, doc,.docx,.ofd,.PDF,.WPS以及Office文档的在线解析预览方式

    在线预览是将Word、PPT、Excel、PDF、OFD、音视频等文件在浏览器中解析查看。       我使用的是usdoc,也有用office online进行在线预览,不过注意的是使用usdoc的时候,我们先需要注册和添加预览的地址域名 usdoc的地址:http://www.usdoc.cn 进入用户中心,我们进行注册 注册好之后,先

    2024年02月11日
    浏览(48)
  • 前端实现word文档预览和内容提取

    需求 上一篇写了excel文档解析,顺便就看看word文档。 解决问题 1.前端在浏览器预览word文档。 2.可以直接提取word文档内容 利用技术 预览文档--docx-preview 提取文档内容--mammoth 预览文档实现过程 实现预览功能 renderAsync接收四个参数 1.document: 数据格式可以为Blob | ArrayBuffer | Uin

    2024年04月14日
    浏览(24)
  • vue实现预览word文档(处理文档流)

     效果图如下: 1、需要用到插件 页面实现预览主要依靠插件,所以这是最重要的一步,如果你用的cnpm包管理器,那就是命令行 2、引入var docxx = require(\\\"docx-preview\\\"); 3、调取接口,获得后端传回的文档流,这里的res.data.data就是文档流,并调用docx-previre的方法渲染文件到页面。

    2024年02月11日
    浏览(45)
  • docker onlyoffice7.1.1 word excel ppt在线编辑、在线预览_部署01

    1. 创建onlyoffice容器 下面命令作用:拉取镜像、映射宿主机端口和docker内部端口、创建宿主机和docker容器挂载目录、拉取指定版本的onlyoffice/documentserver 2. 启动在线案例 执行命令 3. 开放防火墙 4. 浏览器验证 点击GO TO TEST EXAMPLE 测试页面 5. 上传文件测试 6. 在线编辑 7. 测试主页

    2024年02月13日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包