1 参考网址

# 英文版
https://www.onlyoffice.com
# 中文版
https://www.onlyoffice.com/zh/# GitHub上的地址
https://github.com/ONLYOFFICE/DocumentServer# 社区版Docker安装
https://helpcenter.onlyoffice.com/installation/docs-community-install-docker.aspx# DockerHub地址
https://hub.docker.com/r/onlyoffice/documentserver# 开发文档
https://api.onlyoffice.com/editors/basic# 后端参考的demo
https://api.onlyoffice.com/editors/demopreview# 前端参考的配置地址
https://api.onlyoffice.com/editors/config/editor#createUrl
# 前端自定义编辑参数
https://api.onlyoffice.com/editors/config/editor/customization

2 Docker安装OnlyOffice

2.1 安装onlyoffice

# 下载onlyoffice/documentserver:7.1.1
sudo docker pull onlyoffice/documentserver:7.1.1# 创建Onlyoffice容器
# 对外端口81
sudo docker run -itd \
--name my_onlyoffice \
--restart=always \
-p 81:80 \
-v /home/onlyoffice/logs:/var/log/onlyoffice  \
-v /home/onlyoffice/data:/var/www/onlyoffice/Data  \
-v /home/onlyoffice/lib:/var/lib/onlyoffice \
-v /home/onlyoffice/db:/var/lib/postgresql  \
onlyoffice/documentserver:7.1.1

2.2 查看服务

默认会跳转到欢迎页面,"192.168.108.200"是我的地址

http://192.168.108.200:81/

2.3 参数说明

Status返回值说明

https://api.onlyoffice.com/editors/callback#status-descr
status 描述
1 每次用户连接到文档协同编辑或断开文档协同编辑时,都会收到该消息。
2,3 关闭正在编辑的文档10秒钟后,会收到该消息,用户的标识符是最后一个向文档编辑服务发送更改的用户。
4 在最后一个用户关闭文档时收到。
6,7 在执行强制保存请求时收到。

3 前端代码

注意:容器的宿主机与开发电脑需要在同一个局域网中,保证前端访问后端的IP地址能够访问到。

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head><meta charset="utf-8" /><title>OnlyOffice</title>
</head>
<body style="height:800px"><div id="placeholder"></div><script type="text/javascript" src="http://192.168.108.200:81/web-apps/apps/api/documents/api.js"></script><script type="text/javascript">var config = {  // 设置文档信息"document": {"fileType": "docx",// 文档唯一标识,最大长度128"key": "Khirz6zTPdfd7",// 文档名称"title": "Example Document Title.docx",// 文件地址"url": "http://192.168.108.1:8080/office/online",// 添加权限"permissions": {// 设置聊天"chat": true}},// 设置编辑"editorConfig": {// 设置语言"lang": "zh-CN",// 两种编辑(edit)和查看(view)"mode": "edit",// 文件保存时的地址"callbackUrl": "http://192.168.108.1:8080/office/save",/*// 配置用户信息"user": {// 用户编号"id": "admin",// 用户名称"name": "管理员"},*/},};var docEditor = new DocsAPI.DocEditor("placeholder", config);</script>
</body>
</html >

4 SpringBoot使用OnlyOffice

4.1 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.5.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.mason</groupId><artifactId>myonlyoffice</artifactId><version>0.0.1-SNAPSHOT</version><name>myonlyoffice</name><description>myonlyoffice project for Spring Boot</description><properties><java.version>11</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>com.alibaba.fastjson2</groupId><artifactId>fastjson2</artifactId><version>2.0.10</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>

4.2 java代码

package com.mason.myonlyoffice.controller;import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import org.springframework.stereotype.Controller;import org.springframework.util.StreamUtils;
import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URL;@Controller
@ResponseBody
@RequestMapping("/office")
public class EditorController {@GetMapping("/online")public void online(HttpServletResponse response, HttpServletRequest request) {try {response.setCharacterEncoding("utf-8");response.setContentType("application/octet-stream");// 读文件输入流String filePath = "E:\\onlyoffice.docx";InputStream inputStream = new FileInputStream(filePath);// 复制文件流StreamUtils.copy(inputStream, response.getOutputStream());// 关闭输入流inputStream.close();} catch (IOException e) {e.printStackTrace();}}@PostMapping(path = "/save")public void save(HttpServletResponse response, HttpServletRequest request) {try {// 获得response信息PrintWriter writer = response.getWriter();// 获取数据文件信息ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();StreamUtils.copy(request.getInputStream(), byteArrayOutputStream);String fileInfoStr = byteArrayOutputStream.toString();byteArrayOutputStream.close();if (fileInfoStr.isEmpty()) {writer.write("request的输入流为空");return;}System.out.println(fileInfoStr);// 转化字符串对象转化为JSON对象JSONObject fileInfoObj = JSON.parseObject(fileInfoStr);// 获取编辑文件的状态int status = (Integer) fileInfoObj.get("status");int saved = 0;// 关闭正在编辑的文档10秒钟后,会收到该消息if(status == 2 || status == 3) {// 获取文件数据try {URL url = new URL((String) fileInfoObj.get("url"));java.net.HttpURLConnection connection = (java.net.HttpURLConnection) url.openConnection();InputStream inputStream = connection.getInputStream();if (inputStream == null){throw new Exception("Stream is null");}// 保存编辑后的数据String path = "E:\\onlyoffice.docx";File file = new File(path);// 复制数据流FileOutputStream outputStream = new FileOutputStream(file);StreamUtils.copy(inputStream, outputStream);// 关闭数据资源outputStream.close();inputStream.close();connection.disconnect();} catch (Exception ex) {saved = 1;ex.printStackTrace();}}System.out.println("保存文件成功");writer.write("{\"error\":" + saved + "}");} catch (IOException e) {e.printStackTrace();}}}

5 截图

简单使用OnlyOffice相关推荐

  1. office办公软件有哪些:试试OnlyOffice(Office办公软件)官网中文版吧 | 使用简单无需onlyoffice使用教程

    ONLYOFFICE中文版是一款在国外比较流行的优秀的Office办公软件,据说市场占有率仅次于微软的Microsoft Office,可以帮助大家创建复杂的文档.专业的电子表格.令人赞叹的演示文稿以 ...

  2. ONLYOFFICE协作空间是什么?

    今天给大家带来一个好消息,ONLYOFFICE推出更安全的协作空间了,好多朋友看到这个标题不认识是什么,我也是,今天来给大家介绍一下. 什么是 ONLYOFFICE 协作空间 简单来说ONLYOFFI ...

  3. 如何使用Docker容器部署O2OA(翱途)开发平台与OnlyOffice的集成版本?

    O2OA(翱途)开发平台[下称O2OA平台或者O2OA]默认可以和OnlyOffice进行集成来实现在线文档编辑以及流程集成.开发者可以直接安装O2OA官网的OnlyOffice+O2Server的D ...

  4. nextcloud和onlyoffice一键简单无脑部署

    突然有一天,想搭建一个私有云玩玩.nextcloud网上找了好多,配置好麻烦.想简单无脑"粗"暴部署那就自己造轮子,直接用docker-compose部署. 目录结构如下: ├── ...

  5. 简单使用HTML集成OnlyOffice

    前言 ONLYOFFICE,简单地说,就是将 Word .Excel.PPT 3 大办公套件搬到了云端,只需要一个浏览器即可以在线使用 Office 的各种功能. 前提条件 确保相应的js文件可以被正 ...

  6. OnlyOffice简单使用记录

    安装docker 略 拉取onlyoffice镜像 docker pull onlyoffice/documentserver 启动镜像 sudo docker run -i -t -d -p 808 ...

  7. onlyoffice 20并发限制处理

    原文同步自作者博客:https://www.daxueyiwu.com/post/31 开源版本连续打开20个页面就会弹出该提示. 一.方案一 修改六个app.js文件 find ./ -name a ...

  8. 如何在 Debian、Ubuntu 以及其它 Linux 发行版上安装 ONLYOFFICE 桌面编辑器 v7.2 版本

    如何在 Debian.Ubuntu 以及其它 Linux 发行版上安装 ONLYOFFICE 桌面编辑器 v7.2 版本 ONLYOFFICE Docs 在线编辑器[1]的本地桌面电脑客户端软件版本不 ...

  9. 如何利用 onlyoffice 实现文档格式转换

    目录 前言 正文 启动 onlyoffice 服务 API 接口介绍 转换列表 请求示例 结尾 前言 日常生活和工作中,文档格式转换应该是很常见的需求.面对这样的需求,我们技术男有没有属于自己的好方法 ...

最新文章

  1. catv系统主要有哪三部分组成_你了解买车“三大件”之一的悬挂系统吗?家用车用什么悬挂系统?...
  2. Android底层禁用WiFi和蓝牙功能
  3. 在2019年比较云计算服务时需要问的6个问题
  4. VTK:可视化之DistanceToCamera
  5. java swing 怎么_JAVA SWING 怎么用?帮帮忙.
  6. 通过零拷贝实现高效的数据传输(操作系统)
  7. Linux管道和重定向 ---多命令协作
  8. 多线程知识梳理(2) - 并发编程的艺术笔记
  9. 使用Kylin导入JDBC数据源遇到的问题
  10. 4.卷1(套接字联网API)---基本TCP套接字编程
  11. Sql语句查询某列A相同值的另一列B最大值的数据
  12. 全国地址SQL数据文件(精确到区县)
  13. TARA-威胁建模方案4
  14. 来套近乎啊——思维导图
  15. Unity游戏编程自学书籍、插件学习与视频教程
  16. Cpu、核、Java Runtime.getRuntime().availableProcessors()
  17. 3步轻松申请邮箱账号,申请163vip邮箱
  18. linux下搭建游戏服务器运行环境
  19. 40-网上商城数据库-商品类别数据操作(一)
  20. 关于django模型语法里面的一些坑。系统报错:Unknown command: 'validate' Type 'manage.py help' for usage.

热门文章

  1. 二手书交易系统用例图
  2. AnotherRedisDesktopManager
  3. 2021年登高架设考试及登高架设考试题
  4. 用Python入门不明觉厉的马尔可夫链蒙特卡罗(附案例代码)
  5. api接口: actual and formal argument lists differ in length
  6. 推荐几个不错的公众号
  7. 将直播链接放入微信公众号
  8. Did the Microsoft Stack Kill MySpace?
  9. 如何在微信给视频照片做征集投票评分,教你快速制作投票评分小程序
  10. 算法推荐女朋友,靠谱吗?