OnlyOffice在线文档

README.md 8.9KB

Spring-Boot-onlyOffice(集成onlyOffice服务)

springboot集成onlyOffice的实现。在参考网络上的资料结合自身实际情况总结,让集成oo方便快捷。 封装了oo服务的API和统一了配置。

  • 在线编辑,查看,转换

  • onlyOffice.yml配置文件

  • 如果解决了你地方问题,请给个 star

    对外使用的java类 —— OnlyServiceAPI

    核心方法

方法名称 参数 参数说明 返回值
openDocument() Map<String,Object> map 文件数据信息
{
必填 fileId
必填 fileName
必填 fileType
必填 fileSize
可用携带其它值
}
{
"editorConfig": {
    "mode": "edit",
    "customization": {
        "feedback": {
            "visible": false
        },
        "help": false,
        "goback": {
            "blank": false
        },
        "macros": false,
        "autosave": false,
        "comments": false,
        "review": {},
        "hideRightMenu": true,
        "anonymous": {
            "request": false
        },
        "forcesave": true,
        "logo": {},
        "hideNotes": true
    },
    "plugins": {
        "pluginsData": [],
        "autostart": []
    },
    "callbackUrl": "http://172.31.240.1:9090/onlyOffice/save",
    "lang": "zh-CN",
    "user": {
        "name": "TongHuic7bba5",
        "id": "c7bba5"
    }
  },
"docServiceApiUrl": "http://172.31.240.1:8886/web-apps/apps/api/documents/api.js",
"documentType": "word",
"document": {
    "permissions": {
        "edit": true,
        "chat": false,
        "review": false
    },
    "title": "fdfs.docx",
    "fileType": "docx",
    "key": "63f560ec03a94654b10cd4fdeebec05a",
    "url": "http://172.31.240.1:9090/download/09cee8767dd3476280fa865bacfaf213",
    "info": {
        "sharingSettings": [{
            "isLink": true,
            "permissions": ["Full Access"],
            "user": "TongHuic7bba5"
        }],
        "created": "2023-08-05 21:38:25"
    }
},
"type": "desktop",
"token": ""
}
String mode 打开方式
edit
view
boolean collaborativeEditing 是否协同编辑
handlerStatus() JSONObject jsonObject onlyOffice 回调传来的值。
https://api.onlyoffice.com/editors/callback
save():触发保存回调。 String key 是openDocument()返回值中的key String : 提示信息
String userId 用户Id
converted() String filetype 文件类型 转换后的文件下载地址
String fileId 文件Id
String outputtype 转化类型
String title 转换后的文件名称
String password 文档密码

注意:

  • 外部触发保存操作,save()方法。
  • autosave/forcesave 参数为默认值时有效
  • 修改文件后,没有执行回调方法。在点击保存后执行回调

快速使用

  • 必须的依赖
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>2.0.25</version>
    </dependency>
    <dependency>
        <groupId>cn.hutool</groupId>
        <artifactId>hutool-all</artifactId>
        <version>5.8.16</version>
    </dependency>
    <dependency>
        <groupId>com.inversoft</groupId>
        <artifactId>prime-jwt</artifactId>
        <version>1.3.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-pool2</artifactId>
    </dependency>
  • 定义关键接口(oo服务回调使用) 重要

    1.保存接口

        参考:demo/controller/IndexController.saveFile()
        对应配置文件参数:oo.call-back-url
        回调状态
          0 - 找不到具有密钥标识符的文档
          1 - 正在编辑文档(打开文件回调)
          2 - 文档已准备好保存
          3 - 发生文档保存错误
          4 - 不作任何更改就关闭文档(关闭回调)
          6 - 正在编辑文档,但保存当前文档状态(保存回调)
          7 - 强制保存文档时发生错误
    

    2.下载文件地址

        参考:demo/controller/IndexController.download()
        对应配置文件参数:oo.download-file
        对应openDocument()方法返回值中的 document.url
        打开文件后oo服务要下载对应的文件
    
  • 实现SaveFileProcessor类

    参考:demo.service.DemoService
    
    方法名称 方法说明 参数 参数说明 返回值
    saveBeforeInitialization() 保存前置方法 Map<String, Object> map 在openDocument()方法中传入的文件数据信息
    byte[] bytes 文件二进制数据
    String fileExtension 文件后缀
    save() 保存方法,实现自己的保存逻辑 Map<String, Object> map 在openDocument()方法中传入的文件数据信息 Map<String, Object> 更新内存中的信息
    byte[] bytes 文件二进制数据
    byte[] changes 当前文件和保存之前文件的区别。changes.zip
    String key 是openDocument()返回值中的key
    saveAfterInitialization() 保存后置方法 Map<String, Object> map 在openDocument()方法中传入的文件数据信息
    byte[] bytes 文件二进制数据
    String fileExtension 文件后缀

更新记录

  • 修复关闭文件后快速再次打开该文件后,保存时报错的bug 2023/11/10
  • 修复内存文件信息在保存后没有修改的bug 2023/10/23
  • 实现和编辑器的数据通信 2023/9/9 (更新链接) https://blog.xenosp.cn/posts/87468caf/
  • 修复文件转pdf时只有第一页的bug 2023/8/13

页面集成

html

参考 onlyOffice.html
style.js 中的openDocument()

vue

参考 onlyOffice.vue

编辑

查看

文件转换