使用 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插件