当前位置:   article > 正文

史上最全 在线编辑 onlyOffice 使用步骤_onlyoffice使用教程

onlyoffice使用教程

一、VUE前端

1.首先在页面引入两个js  

https://download.csdn.net/download/weixin_41560845/88359958

2.业务页面跳转到onlyOffice页面方法

  1. onlineEdit(item) {
  2.     this.onlieData = item
  3.     this.$refs.ruleForm.validate(async (valid) => {
  4.         if (valid) {
  5.                 const routeData = this.$router.resolve({
  6.                     path: '../onlyoffice.html?id='this.ruleForm.id,      //跳转目标窗口的地址
  7.                 })
  8.                 var $windowObj  = null;
  9.                 var that = this;
  10.                 $windowObj = window.open(routeData.href, '_blank')
  11.                 var loop = setInterval(function() {
  12.                     if($windowObj  != null && $windowObj.closed) {
  13.                         clearInterval(loop);
  14.                         alert('关闭')
  15.                         //do something .....在这里执行回调
  16.                     }
  17.                 }, 800);
  18.         }
  19.     })
  20. }

3.onlyOffice.vue页面写法

  1. //①引入两个js
  2. import {loadJs,edit} from "./loadJs.js";
  3. //②初始化页面方法
  4.   mounted(){
  5.             loadJs().then(()=>{
  6.                   edit().then(()=>{
  7.                       // 加载成功,进行后续操作                      
  8.                        this.id = this.$route.query.id  //接收参数
  9.                        exportTemplateFile( )//调用方法
  10.               });
  11.             });               
  12.         },
  13.    methods: {
  14.      exportTemplateFile(){
  15.      //通过模板生成可以访问的文件,即将模板下载到可直接访问的路径
  16.             exportTemplateFile({id: this.id})
  17.                 .then((res) => {
  18.                    if (res.recode == 200) {
  19.                    //返回的文件信息,注意返回的两个路径  fileurl 、callbackurl
  20.                     var filekey = res.redata.fileid
  21.                     var fileurl = res.redata.filepath;//模板处理过后的文件路径
  22.                     var filetype =  "docx";//注意这里只能是docx格式
  23.                     var filetitle = res.redata.filename;
  24.                     var callbackurl = res.redata.filepathSave;//在线编辑时文件需保存是的保存文件的方法。如:var callbackurl = 'http://127.0.0.8:80/project/onlyOfficeController/saveOnlineFile/“这个参数是token”'   console.log(res.redata.filepathw);          this.pageinitDoc(filekey,fileurl,filetype,filetitle,callbackurl,res.redata.userid,res.redata.username,res.redata.itemcode);
  25.                    }
  26.                 })
  27.                 .catch((error) => {
  28.                     console.log(error);
  29.                 });
  30.         },
  31.  async  pageinitDoc(filekey,fileurl,filetype,filetitle,callbackurl,userid,username,itemcode){
  32. //onlyOffice页面工具配置
  33.                     var config = {
  34.                             "document": {
  35.                         "fileType": filetype,
  36.                         "type": "desktop",
  37.                         "key": filekey,
  38.                         "title": filetitle,
  39.                         "url": fileurl
  40.                     },
  41.                     "editorConfig": {
  42.                         "callbackUrl": callbackurl, //保存文件时的回调地址
  43.                         "lang": "zh", //语言环境
  44.                         "mode": "edit",
  45.                         "documentType": "text",
  46.                         customization: {
  47.                             "hideRightMenu": true,
  48.                             "forcesave": true,
  49.                           "autosave": false,
  50.                           "help": false,
  51.                           "chat": false,
  52.                           "comments": false,
  53.                           "compactHeader":true,
  54.                           "compactToolbar":false,
  55.                           "hideRulers":false,
  56.                           "macros": false,
  57.                           "plugins": false,
  58.                           "showReviewChanges": false,
  59.                           "spellcheck": false,
  60.                           "toolbarNoTabs": true,
  61.                           "zoom": 100,
  62.                           "customer": false,
  63.                           "feedback": false,
  64.                           "goback":false,
  65.                           "hideNotes": true,
  66.                           features: {
  67.                             spellcheck: false
  68.                           }
  69.                         },
  70.                         "user": {
  71.                             id: userid,
  72.                             name: username,
  73.                             group: itemcode
  74.                         }
  75.                     }
  76.                     };
  77.                     var docEditor = new DocsAPI.DocEditor("placeholder", config);
  78.                     // self.close();
  79.         },
  80. },

二、java后端

exportTemplateFile方法

步骤:①获取模板,②替换模板书签内容(没有书签,此步骤可以省略),③生成新的文件,④将文件上传至服务器,⑤返回文件实体 FileObject

在线编辑自动saveOnlineFile方法

controller:
 

  1. @RequestMapping("/saveonlineFile/{id}/{fileId}/{filekey}/{flag}/{token}")
  2. @ResponseBody
  3. public void saveNotieonlineFile(
  4. HttpServletRequest request,
  5. HttpServletResponse response,
  6. @PathVariable(value="id") String id,
  7. @PathVariable(value="fileId") String fileId,
  8. @PathVariable(value="filekey") String filekey,
  9. @PathVariable(value="flag") String flag,
  10. @PathVariable(value="token") String token
  11. ) throws Exception {
  12. try {
  13. onlyOfficeComService.saveonlineFile(request,response,id,fileId,filekey,flag,token);
  14. } catch (Exception e) {
  15. e.printStackTrace();
  16. log.error(e.getMessage(),e);
  17. }
  18. }

service

  1. public void saveonlineFile(HttpServletRequest request,HttpServletResponse response, String id,String fileId,
  2. String filekey,String flag, String token) {
  3. RequestTools.showParams(request);
  4. PrintWriter writer = null;
  5. String body = "";
  6. //获取文件流
  7. try {
  8. writer = response.getWriter();
  9. Scanner scanner = new Scanner(request.getInputStream());
  10. scanner.useDelimiter("\\A");
  11. body = scanner.hasNext() ? scanner.next() : "";
  12. scanner.close();
  13. } catch (Exception ex) {
  14. writer.write("get request.getInputStream error:" + ex.getMessage());
  15. }
  16. //请求体为空
  17. if (body.isEmpty()) {
  18. writer.write("ONLYOFFICE回调保存请求体为空");
  19. }
  20. try {
  21. System.out.println(body);
  22. JSONObject jsonObj = JSONObject.parseObject(body);
  23. log.info("jsonObj"+jsonObj);
  24. int status = (Integer) jsonObj.get("status");
  25. // int status = 6;
  26. log.info("*************************************************");
  27. log.info("status=" + status);
  28. log.info("*************************************************");
  29. // 0找不到具有密钥标识符的文档,
  30. if (status == 0) {
  31. writer.write("{\"error\":0}");
  32. }
  33. // 1正在编辑文档
  34. if (status == 1) {
  35. writer.write("{\"error\":0}");
  36. }
  37. // 2文档已准备好保存
  38. if (status == 2) {
  39. String downloadUri = (String) jsonObj.get("url");
  40. System.out.println(downloadUri);
  41. writer.write("{\"error\":0}");
  42. }
  43. // 3发生文档保存错误
  44. if (status == 3) {
  45. String downloadUri = (String) jsonObj.get("url");
  46. System.out.println(downloadUri);
  47. writer.write("{\"error\":0}");
  48. }
  49. // 4文档已关闭,没有任何更改
  50. if (status == 4) {
  51. writer.write("{\"error\":0}");
  52. }
  53. if (status == 5) {
  54. }
  55. // 6正在编辑文档,但当前文档状态已保存,
  56. if (status == 6) {
  57. // 获取文件路径
  58. String downloadUri = (String) jsonObj.get("url");
  59. System.out.println("url:"+downloadUri);
  60. System.out.println("********************");
  61. System.out.println(fileId);
  62. System.out.println("url2:"+downloadUri);
  63. System.out.println("********************");
  64. //此方法为获取在线文件中的书签内容更新数据库,若无此需求,可忽略
  65. updatefilecontext(token,id,fileId, downloadUri);
  66. // 返回根据
  67. writer.write("{\"error\": 0}");
  68. }
  69. // 7强制保存文档时出错
  70. if (status == 7) {
  71. String downloadUri = (String) jsonObj.get("url");
  72. System.out.println("downloadUri:***"+downloadUri);
  73. writer.write("{\"error\":0}");
  74. }
  75. // writer.write("{\"error\":0}");
  76. } catch (Exception e) {
  77. writer.write("{\"error\":-1}");
  78. e.printStackTrace();
  79. }
  80. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/136462
推荐阅读
相关标签
  

闽ICP备14008679号