1

我们正在开发一个带有 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...但我们的要求是在单击保存按钮时保存文档。提前致谢。

4

1 回答 1

0

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

于 2015-11-06T09:00:10.480 回答