Java集成Onlyoffice以及安装和使用示例,轻松实现word、ppt、excel在线编辑功能协同操作,Docker安装Onlyoffice

本文详细介绍了如何在Docker中安装和配置OnlyOffice,包括拉取镜像、启动服务、映射端口以及配置接口以支持在线编辑和文件协作。通过示例展示了如何在Java应用中集成OnlyOfficeAPI,以及创建和使用HTML页面进行文件编辑和保存。
摘要由CSDN通过智能技术生成

安装Onlyoffice

拉取onlyoffice镜像 

docker pull onlyoffice/documentserver

查看镜像是否下载完成

docker images

启动onlyoffice

以下是将本机的9001端口映射到docker的80端口上,访问时通过服务器ip:9001访问,并且用 -v 将本机机==/data/aws_s3/file-storage==文件夹挂载到docker的 /var/www/onlyoffice/documentserver/web-apps/wsData文件下,后续直接通过http请求读取对应的文件夹

docker run -i -t -d -p 9001:80 -v /data/aws_s3/file-storage:/var/www/onlyoffice/documentserver/web-apps/wsData onlyoffice/documentserver

打开浏览器输入ip:9001,如下图根据自己需要执行测试和自启动命令:


出现以下页面就安装成功:

进入容器修改配置:

docker exec -it 容器ID bash


示例应用

一、了解onlyoffice

ONLYOFFICE Docs是一个开源办公套件,包括文本文档、电子表格和演示文稿的编辑器。它提供以下功能:

1、创建、编辑和查看文本文档、电子表格和演示文稿;

2、与其他队友实时协作处理文件;

3、ONLYOFFICE Docs 还支持用于将您的应用程序与在线办公室集成的WOPI 协议。

二、前提准备

搭建安装onlyoffice,具体参考官网地址:

https://helpcenter.onlyoffice.com/installation/docs-developer-install-ubuntu.aspx?from=api_csharp_example

配置文档ONLYOFFICE API 文档 - 基本概念

三、开发进行中

1、准备一个接口返回config配置文件。

@GetMapping("/config/{fileId}")
@ApiOperation("返回配置信息")
public String getConfig(ModelMap map,@PathVariable String fileId){
    //具体业务处理省略
    //主要是获取一些信息,用于设置html中的脚本对象config上。
    //4、设置视图数据:a、文件类型。b、用户信息。c、文件信息。
    map.addAttribute("docType",documentType);
    map.addAttribute("user",user);
    map.addAttribute("fileManager",fileManager);    //将html页面返回回去
    return "onlineEdit";
}

2、准备一个callback接口用于文件保存。

@PostMapping("/saveFile/{fileId}/{fileCode}")
@ApiOperation("在线编辑保存回调接口")
@ResponseBody
public void saveFile(HttpServletRequest request , HttpServletResponse response, @PathVariable String fileId, @PathVariable String fileCode) throws IOException {
    PrintWriter writer = response.getWriter();
    Scanner scanner = new Scanner(request.getInputStream()).useDelimiter("\\A");
    String body = scanner.hasNext() ? scanner.next() : "";
    JSONObject jsonObject = JSONObject.parseObject(body);
    System.out.println(jsonObject);
    //status等于2时表示已经准备好保存
    if((Integer) jsonObject.get("status") == 2){
      //2、根据返回的Url去下载文件
      URL url = new URL((String) jsonObject.get("url"));
      java.net.HttpURLConnection connection = (java.net.HttpURLConnection) url.openConnection();
      InputStream stream = connection.getInputStream();
      //此处获取到的流即是onlyoffice服务下的文件流。
      //3、重新上传业务省略
      connection.disconnect();
    }
    writer.write("{\"error\":0}");
 
}

3、准备一个html页面。

<!DOCTYPE html>
<html lang="en" style="height: 100%;">
<head>
    <meta charset="UTF-8">
    <script type="text/javascript" src="https://192.168.53.151:9000/web-apps/apps/api/documents/api.js"></script>
    <script type="text/javascript" language="javascript" >
        var  config = {
            "type": "desktop",
            "mode": "review",
            "documentType": "[[${docType}]]",
            "document": {
                "title": "[[${fileManager.fileName}]]",
                "url": "文件下载地址",
                "fileType": "[[${fileManager.fileType}]]",
                "key": "[[${fileManager.fileManagerId}]]",
                "info": {},
                "permissions": {
                    "comment": true,
                    "copy": true,
                    "download": true,
                    "edit": true,
                    "print": true,
                    "fillForms": true,
                    "modifyFilter": true,
                    "modifyContentControl": true,
                    "review": true,
                    "commentGroups": {}
                }
            },
            "editorConfig": {
                "mode": "edit",
                "callbackUrl": 回调接口保存文件的地址,
                "lang": "zh",
                "createUrl": "",
                "templates": [
                    {
                        "icon": "",
                        "name": "Blank",
                        "url": "http://ip地址/OnlineEditorsExampleJava_war_exploded/EditorServlet?fileExt=docx"
                    },
                    {
                        "icon": "http://ip地址/OnlineEditorsExampleJava_war_exploded/css/img/file_docx.svg",
                        "name": "With sample content",
                        "url": "http://ip地址/OnlineEditorsExampleJava_war_exploded/EditorServlet?fileExt=docx&sample=true"
                    }
                ],
                "user": {
                    "id": "[[${user.userId}]]",
                    "name": "[[${user.username}]]"
                },
                "customization": {
                    "goback": {
                        "url": "http://ip地址/OnlineEditorsExampleJava_war_exploded/IndexServlet"
                    },
                    "forcesave": false,
                    "submitForm": false,
                    "about": true,
                    "feedback": false
                },
                "canCoAuthoring": true,
                "canUseHistory": true,
                "canHistoryClose": true,
                "canHistoryRestore": false,
                "canSendEmailAddresses": false,
                "canRequestEditRights": true,
                "canRequestClose": false,
                "canRename": false,
                "canMakeActionLink": true,
                "canRequestUsers": true,
                "canRequestSendNotify": true,
                "canRequestSaveAs": false,
                "canRequestInsertImage": true,
                "canRequestMailMergeRecipients": true
            },
            "width": "100%",
            "height": "100%",
            "events": {},
            "frameEditorId": "iframeEditor"
        }
        var connectEditor = function () {
            new DocsAPI.DocEditor("placeholder", config);
        };
        if (window.addEventListener) {
            window.addEventListener("load", connectEditor);
        } else if (window.attachEvent) {
            window.attachEvent("load", connectEditor);
        }
    </script>
    <title>在线编辑文档</title>
</head>
<body style="height: 100%; margin: 0;">
<div id="placeholder" style="height: 100%"></div>
</body>
</html>

更加具体的config对象和回调处理接口内容参考官网:

https://api.onlyoffice.com/editors/getdocs

四、测试

当我调用config接口时,打开不同类型的文件,展示返回html页面如下。

五、总结

1、要使用onlyoffice去在线编辑不难,主要是掌握config的配置。

2、它的一个工作流程:当我打开在线编辑时,接口设置数据返回html页面,并将数据拼接到config上。接着页面会根据config的url地址去下载源文件,最后将内容展示到html上。最后当我们修改完毕关闭了窗口时,会调用callbackurl的接口进行文件保存。
 


同类产品官网,贴在下面如果大家有好的使用方法可以分享下:

onlyoffice官网:https://www.onlyoffice.com/

Api官方地址(英文):https://api.onlyoffice.com/editors/basic

Api中文地址(中文):https://www.onlyoffice.org.cn/guide/usage-mode.html

OpenOffice官网:https://www.openoffice.org

LibreOffice官网:https://www.libreoffice.org


参考链接:链接1链接(原理)2,链接3


如果本篇文章对你有帮助的话,很高兴能够帮助上你。

当然,如果你觉得文章有什么让你觉得不合理、或者有更简单的实现方法又或者有理解不来的地方,希望你在看到之后能够在评论里指出来,我会在看到之后尽快的回复你。

  • 6
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
### 回答1: 要在Docker安装OnlyOffice,您可以按照以下步骤进行操作: 1. 首先,您需要安装Docker。您可以在Docker官方网站上找到适合您操作系统的安装程序。 2. 下载OnlyOffice Docker镜像。您可以在Docker Hub上找到OnlyOffice镜像。运行以下命令以下载OnlyOffice镜像: ``` docker pull onlyoffice/documentserver ``` 3. 创建OnlyOffice容器。运行以下命令以创建OnlyOffice容器: ``` docker run -i -t -d -p 80:80 -p 443:443 --restart=always onlyoffice/documentserver ``` 4. 等待OnlyOffice容器启动。您可以使用以下命令检查容器状态: ``` docker ps ``` 如果容器状态为“运行中”,则表示OnlyOffice已成功安装。 5. 现在,您可以通过浏览器访问OnlyOffice。只需在浏览器中输入服务器的IP地址或域名即可访问OnlyOffice。 希望这可以帮助您安装OnlyOffice。 ### 回答2: Docker是一种容器化技术,它可以将应用和其依赖项打包成一个可移植的容器,可以在任何地方运行,带来了极大的便利性和灵活性。Onlyoffice是一套开源的协同办公套件,包括文档、表格、幻灯片等应用,可以与多种云服务集成。 在安装Docker之前,需要先检查系统是否满足以下要求: -64位操作系统(目前只支持64位) -内核版本3.10或更高版本 -至少2 GB内存(推荐4 GB) -至少2 GB可用硬盘空间 安装Docker: 1.访问Docker官网(https://docs.docker.com/engine/installation/linux/docker-ce/centos/),按照步骤下载安装包,并安装。 2.安装完成后,执行以下命令启动Docker服务:sudo systemctl enable docker && sudo systemctl start docker 准备Onlyoffice镜像: 1.访问Docker Hub官网(https://hub.docker.com/search?q=onlyoffice&type=image),下载Onlyoffice镜像(下载速度可能会有一定影响)。 2.命令行输入以下指令下载Onlyoffice镜像:docker pull onlyoffice/documentserver 运行Onlyoffice容器: 1.执行以下命令启动Onlyoffice容器(其中“-it”选项为以交互方式启动容器,“-p”选项用于将容器端口映射到宿主机端口): docker run -it -p 80:80 onlyoffice/documentserver 2.启动容器后,访问“http://localhost/”即可进入Onlyoffice服务端界面。 使用Onlyoffice使用Onlyoffice需要先注册一个账号,并建立一个文档,可以选择上传WordExcelPowerPoint等类型的文件或从零开始创建新的文档。在Onlyoffice服务端界面中,工具栏提供了丰富的编辑功能,支持实时协同编辑和多人同时编辑编辑完成后,可以选择保存到本地,也可以导出为多种文件格式,如PDF等。 以上是docker安装Onlyoffice的基本流程,对于初学者来说可能需要学习较长的时间,但是一旦了解了Docker安装过程和Onlyoffice使用方法,将可以更快捷、高效地完成协同办公的工作。 ### 回答3: Docker 是现在最流行的容器化技术,而 OnlyOffice 是一种全新的办公套件,其功能和 Microsoft Office 类似,但比 Microsoft Office 更轻便易用。在安装OnlyOffice 时,使用Docker 将是一种很有趣的方式。本文将介绍如何使用 Docker 安装并配置 OnlyOffice。 第一步:安装 Docker Docker 是开源的容器化解决方案,可以方便地部署和运行应用程序。因此,我们首先需要安装 Docker。对于不同的操作系统,安装步骤不同。对于 Ubuntu, 需要执行以下命令: ``` $ sudo apt-get install docker.io ``` 对于其他 Linux 发行版和 Windows/MacOS 可以参考 Docker 的官方文档进行安装。 第二步:下载并运行 OnlyOffice 容器 从 Docker Hub 拉取 OnlyOfficeDocker 镜像: ``` $ sudo docker pull onlyoffice/documentserver ``` 然后启动 OnlyOffice 容器: ``` $ sudo docker run -i -t -d -p 80:80 --restart=always onlyoffice/documentserver ``` 这里运行的命令,我们解释一下: - -i: 表示启动交互模式,可以输入命令。 - -t: 表示我们要分配一个终端。 - -d: 表示容器后台运行。 - -p 80:80: 表示将容器的端口映射到本地端口 80 上。 - --restart=always: 表示容器在退出后自动重启。 该命令执行后,OnlyOffice 就开始运行了,可以在浏览器上访问 http://localhost,打开 OnlyOffice。 第三步:配置 OnlyOffice 默认情况下,OnlyOffice 会在容器内部运行,并监听在端口 80 上。为了让我们能够访问 Office 文档,我们需要将本地的端口 80 映射到容器的端口 80。这通过上面的命令中的 -p 参数实现。 现在,我们可以访问 http://localhost 来访问 OnlyOffice。It is done! 总结 在本文中,我们了解了如何使用 Docker 安装 OnlyOffice。我们首先安装Docker,然后从 Docker Hub 拉取 OnlyOffice 镜像,最后运行容器。通过这些步骤,我们可以轻松安装和部署 OnlyOffice,让我们可以更方便地使用这个强大的办公套件。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值