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