美文网首页
web端编辑offce文档 OnlyOffice 免费

web端编辑offce文档 OnlyOffice 免费

作者: name_howe | 来源:发表于2021-11-10 17:50 被阅读0次

    有网情况下可以直接调用微软api:http://view.officeapps.live.com/op/view.aspx?src=需要编辑的文档地址

    在没有联网情况下使用OnlyOffice:
    参考地址:https://www.cnblogs.com/ken-lk/p/14759916.html
    官网地址:https://helpcenter.onlyoffice.com/installation/docs-community-install-docker.aspx
    前端api地址:https://api.onlyoffice.com/editors/advanced

    1、在index.html中引入api.js:

    // 此js文件要放入服务端 需要后端配合
    <script type="text/javascript" src="http://onlyoffice服务地址/web-apps/apps/api/documents/api.js"></script>
    

    2、vue页面中:

    <template>
      <div id="monitorOffice" style="height: 100%;"></div>
    </template>
    <script>
    import { handleDocType } from '@/utils/constants'
    export default {
      data() {
        return {
          doctype: '',
          option: {
            url: '', // 要编辑或预览的文档地址
            fileType: 'xlsx', // 文件类型
            key: 'Khirz6zTP22df2', // 随机不同的字符串
            title: '测试内容编辑', 
            isEdit: true, // true为编辑 false为预览
            editUrl: '', // 文档修改后保存的地址
          }
        }
      },
      mounted() {
        if (this.$route.query.url) {
          this.setEditor(this.$route.query)
        }else{
          this.setEditor(this.option)
        }
      },
      methods: {
        setEditor(option) {
          this.doctype = handleDocType(option.fileType)
          // office配置参数
          let config = {
            document: {
              fileType: option.fileType,
              key: option.key,
              title: option.title,
              permissions: {
                comment: false,
                download: false,
                modifyContentControl: true,
                modifyFilter: true,
                print: false,
                edit: option.isEdit//是否可以编辑: 只能查看,传false
                // "fillForms": true,//是否可以填写表格,如果将mode参数设置为edit,则填写表单仅对文档编辑器可用。 默认值与edit或review参数的值一致。
                // "review": true //跟踪变化
              },
              url: option.url
            },
    
            documentType: this.doctype,
            editorConfig: {
              callbackUrl: option.editUrl,//"编辑word后保存时回调的地址,这个api需要自己写了,将编辑后的文件通过这个api保存到自己想要的位置
              //语言设置
              lang: 'zh-CN',
              location: 'zh-CN',
              customization: {
                autosave: false,//是否自动保存
                chat: false,
                forcesave: true,// true 表示强制文件保存请求添加到回调处理程序
                feedback: {
                  visible: false // 隐藏反馈按钮
                },
                comments: false,
                help: false,
                hideRightMenu: true,//定义在第一次加载时是显示还是隐藏右侧菜单。 默认值为false
                logo: {
                  image: 'https://file.iviewui.com/icon/viewlogo.png',
                  imageEmbedded: 'https://file.iviewui.com/icon/viewlogo.png'
                },
                spellcheck: false//拼写检查
              }
            },
            width: '100%',
            height: '100%'
          }
          let docEditor = new DocsAPI.DocEditor('monitorOffice', config)
          console.log(docEditor)
        }
      },
      watch: {
        option: {
          handler: function(n, o) {
            this.setEditor(n)
            this.doctype = handleDocType(n.fileType)
          },
          deep: true
        }
      }
    }
    </script>
    

    3、引入的方法

    export function handleDocType(fileType) {
        let docType = '';
        let fileTypesDoc = [
          'doc', 'docm', 'docx', 'dot', 'dotm', 'dotx', 'epub', 'fodt', 'htm', 'html', 'mht', 'odt', 'ott', 'pdf', 'rtf', 'txt', 'djvu', 'xps'
        ];
        let fileTypesCsv = [
          'csv', 'fods', 'ods', 'ots', 'xls', 'xlsm', 'xlsx', 'xlt', 'xltm', 'xltx'
        ];
        let fileTypesPPt = [
          'fodp', 'odp', 'otp', 'pot', 'potm', 'potx', 'pps', 'ppsm', 'ppsx', 'ppt', 'pptm', 'pptx'
        ];
        if (fileTypesDoc.includes(fileType)) {
          docType = 'text'
        }
        if (fileTypesCsv.includes(fileType)) {
          docType = 'spreadsheet'
        }
        if (fileTypesPPt.includes(fileType)) {
          docType = 'presentation'
        }
        return docType;
      }
    

    相关文章

      网友评论

          本文标题:web端编辑offce文档 OnlyOffice 免费

          本文链接:https://www.haomeiwen.com/subject/jolizltx.html