简单使用OnlyOffice
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相关推荐
- office办公软件有哪些:试试OnlyOffice(Office办公软件)官网中文版吧 | 使用简单无需onlyoffice使用教程
ONLYOFFICE中文版是一款在国外比较流行的优秀的Office办公软件,据说市场占有率仅次于微软的Microsoft Office,可以帮助大家创建复杂的文档.专业的电子表格.令人赞叹的演示文稿以 ...
- ONLYOFFICE协作空间是什么?
今天给大家带来一个好消息,ONLYOFFICE推出更安全的协作空间了,好多朋友看到这个标题不认识是什么,我也是,今天来给大家介绍一下. 什么是 ONLYOFFICE 协作空间 简单来说ONLYOFFI ...
- 如何使用Docker容器部署O2OA(翱途)开发平台与OnlyOffice的集成版本?
O2OA(翱途)开发平台[下称O2OA平台或者O2OA]默认可以和OnlyOffice进行集成来实现在线文档编辑以及流程集成.开发者可以直接安装O2OA官网的OnlyOffice+O2Server的D ...
- nextcloud和onlyoffice一键简单无脑部署
突然有一天,想搭建一个私有云玩玩.nextcloud网上找了好多,配置好麻烦.想简单无脑"粗"暴部署那就自己造轮子,直接用docker-compose部署. 目录结构如下: ├── ...
- 简单使用HTML集成OnlyOffice
前言 ONLYOFFICE,简单地说,就是将 Word .Excel.PPT 3 大办公套件搬到了云端,只需要一个浏览器即可以在线使用 Office 的各种功能. 前提条件 确保相应的js文件可以被正 ...
- OnlyOffice简单使用记录
安装docker 略 拉取onlyoffice镜像 docker pull onlyoffice/documentserver 启动镜像 sudo docker run -i -t -d -p 808 ...
- onlyoffice 20并发限制处理
原文同步自作者博客:https://www.daxueyiwu.com/post/31 开源版本连续打开20个页面就会弹出该提示. 一.方案一 修改六个app.js文件 find ./ -name a ...
- 如何在 Debian、Ubuntu 以及其它 Linux 发行版上安装 ONLYOFFICE 桌面编辑器 v7.2 版本
如何在 Debian.Ubuntu 以及其它 Linux 发行版上安装 ONLYOFFICE 桌面编辑器 v7.2 版本 ONLYOFFICE Docs 在线编辑器[1]的本地桌面电脑客户端软件版本不 ...
- 如何利用 onlyoffice 实现文档格式转换
目录 前言 正文 启动 onlyoffice 服务 API 接口介绍 转换列表 请求示例 结尾 前言 日常生活和工作中,文档格式转换应该是很常见的需求.面对这样的需求,我们技术男有没有属于自己的好方法 ...
最新文章
- catv系统主要有哪三部分组成_你了解买车“三大件”之一的悬挂系统吗?家用车用什么悬挂系统?...
- Android底层禁用WiFi和蓝牙功能
- 在2019年比较云计算服务时需要问的6个问题
- VTK:可视化之DistanceToCamera
- java swing 怎么_JAVA SWING 怎么用?帮帮忙.
- 通过零拷贝实现高效的数据传输(操作系统)
- Linux管道和重定向 ---多命令协作
- 多线程知识梳理(2) - 并发编程的艺术笔记
- 使用Kylin导入JDBC数据源遇到的问题
- 4.卷1(套接字联网API)---基本TCP套接字编程
- Sql语句查询某列A相同值的另一列B最大值的数据
- 全国地址SQL数据文件(精确到区县)
- TARA-威胁建模方案4
- 来套近乎啊——思维导图
- Unity游戏编程自学书籍、插件学习与视频教程
- Cpu、核、Java Runtime.getRuntime().availableProcessors()
- 3步轻松申请邮箱账号,申请163vip邮箱
- linux下搭建游戏服务器运行环境
- 40-网上商城数据库-商品类别数据操作(一)
- 关于django模型语法里面的一些坑。系统报错:Unknown command: 'validate' Type 'manage.py help' for usage.