使用 OnlyOffice 在基于 J2EE 的 Web 应用程序中进行在线文档编辑 - 但回调 URL 不起作用

Posted

技术标签:

【中文标题】使用 OnlyOffice 在基于 J2EE 的 Web 应用程序中进行在线文档编辑 - 但回调 URL 不起作用【英文标题】:Online Document editing in J2EE based web applications with OnlyOffice- But callback Url is not working 【发布时间】:2015-10-31 13:52:02 【问题描述】:

我们正在开发一个使用 angularJS 并使用 spring/hibernate 的 Web 应用程序。 我们在生产环境中使用Linux操作系统,开发环境是Windows。我们正在尝试在我们的应用程序中实现像ms-word这样的在线文档编辑工具。

经过一些研究,我们正在使用 OnlyOffice https://api.onlyoffice.com/ 。 我正在使用以下 angularJs 组件来使用 onlyOffice https://github.com/legalthings/angular-onlyoffice 我们能够将它与应用程序集成,我们可以在 Web 浏览器的编辑器中看到打开的文档。 但是我的更改没有被保存。控件没有到达 callBackUrl。

由于 angularJs 组件使用了 OnlyOffice API 中不再存在的 onSave 方法。所以我稍微更改了 html 和 JS 文件中的代码:- HTML文件代码为:-

<div ng-controller="DocumentEditController">
  <onlyoffice-editor src=" trustSrc(document.src) "
                     title=" document.name ">
  </onlyoffice-editor>
</div>

而JS文件代码是:-

angular.module('onlyoffice', []);

 angular.module('onlyoffice').directive('onlyofficeEditor', [function () 
 function key(k) 
 var result = k.replace(new RegExp("[^0-9-.a-zA-Z_=]", "g"), "_") + (new                                           

 Date()).getTime();
 return result.substring(result.length - Math.min(result.length, 50));
 

 var getDocumentType = function (ext) 
 if (".docx.doc.odt.rtf.txt.html.htm.mht.pdf.djvu.fb2.epub.xps".indexOf(ext)             != -1) return "text";
if (".xls.xlsx.ods.csv".indexOf(ext) != -1) return "spreadsheet";
if (".pps.ppsx.ppt.pptx.odp".indexOf(ext) != -1) return "presentation";
return null;
;

return 
template: '<div id="onlyoffice-editor"></div>',

link: function ($scope, $element, $attrs) 
  $scope.$watch(function () 
    return $attrs.src;
  , function () 
    if (!$attrs.src) return;
    var docUrl = $attrs.src;
    var docTitle = $attrs.title || docUrl;
    var docKey = key(docUrl);
    var docType = docUrl.split('?')[0].substring(docUrl.lastIndexOf(".") + 1).trim().toLowerCase();
    var documentType = getDocumentType(docType);

    var config = 
      type: "desktop",
      width: '100%',
      height: '100%',
      documentType: documentType,
      document: 
        title: docTitle,
        url: docUrl,
        fileType: docType,
        key: docKey,
        permissions: 
          edit: true,
          download: false
        
      ,
      editorConfig: 
        mode: 'edit',
        callbackUrl:"/documentSave"
      ,
      events: 
        onReady: function () alert("in on ready");
          setTimeout(function () 
            $scope.$apply(function () 
              $scope.ready = true;
            );
          , 5000);
        ,

        onError: function (event) 
            alert(event.data);
          //  var url = event.data;
           // $scope.save(url: url, close: $scope.close);
          ,
        
    ;

    //creating object editing
    new DocsAPI.DocEditor("onlyoffice-editor", config);
  );

 
 ]);

我也使用 localhost 和 appname 将 documenSave 更改为完全限定名称,但这也不起作用。 非常感谢任何帮助。

编辑

现在在关闭浏览器按钮时调用CallBackUrl...但是我们的要求是在单击保存按钮时保存文档。 提前致谢。

【问题讨论】:

【参考方案1】:

事实上,单击“保存”按钮会在文档编辑器中创建一个临时文件。只有在所有用户关闭文档编辑器后(十秒内),才会创建工作文档版本。 更改后的文档无法实时下载(关闭前)。

【讨论】:

以上是关于使用 OnlyOffice 在基于 J2EE 的 Web 应用程序中进行在线文档编辑 - 但回调 URL 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

docker版seafile添加office文件预览基于OnlyOffice

基于Docker 部署 Seafile+OnlyOffice+Wiki插件

如何使用集成在 SharePoint 中的开源 ONLYOFFICE 文档替代微软 Office

onlyoffice

onlyoffice : 转换后如何检索文档

onlyOffice安装与使用