# onlyoffice-api **Repository Path**: sherlocky/onlyoffice-api ## Basic Information - **Project Name**: onlyoffice-api - **Description**: OnlyOffice 简单封装 Restful API,支持文档在线预览,在线编辑。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 66 - **Forks**: 21 - **Created**: 2019-10-29 - **Last Updated**: 2024-12-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 调用OnlyOffice JS 来实现office文档在线预览&编辑 ## 简介 使用OnlyOffice document server 来实现文档的在预览和编辑,屏蔽了OnlyOffice内部细节,抽象一套API。 。。。 关于查看页面的下载: > doc/docx/xlx/xlsx/ppt/pptx/pdf 会下载为pdf格式 > txt 会下载为txt格式 ## 部署要求 - 首先需要先部署OnlyOffice,并保证和OnlyOffice能够互通。 - OnlyOffice 和 该服务访问地址均需要开放给客户。 - 该服务需要直接读取硬盘上原始文档文件。 ## 使用说明 。。。 ## TODO LIST - [X] 根据文档磁盘路径预览 - [X] 注意 pdf,txt 等预览时的CORS问题 - [ ] 手机端的预览体验? - [X] 添加一个简单的demo页面 - [X] 路径能否支持中文? - [X] 文档 id 改用 md5 实现(目前使用crc32) - [X] 文档 id 缓存改用 redis(已支持redis和内存缓存) - [X] 文件路径中名称可能是hash后的结果,要支持实际文件名称自定义 - [X] 文档后缀为大写的测试 - [X] 文档缓存应该尽可能的小,少占用空间 - [ ] 加强容错 - [X] 需要测试预览页面的下载是否好使 - [X] 配置的校验(无有效配置可阻止启动) - [X] ViewModel和Rest类型Controller要分开? - [ ] 加密或者错误格式的文档的预览和编辑,容错 - [ ] 是否需要校验文档的真实格式和后缀是否相符? - [X] 编辑功能?分开实现? - [ ] pdf 不应该提供编辑功能 - [ ] 同一key不可编辑多次?貌似onlyoffice限制,还是理解偏差,有待确认! 编辑时需要业务调用方传递一个业务id? - [ ] 多人同时编辑时,存储位置如何指定?还是直接修改覆盖源文件?允许客户端指定保存的位置? - [ ] 编辑时是否可以提供两种方式?1.原文件直接修改 2.另存为临时文件,回调给客户端 !!!需要通知调用者,编辑已完成 - [ ] 编辑后的写操作是否应该对文件加锁(注意超时),注意文件流释放 - [ ] 提供类似bisheng的api、参数等md5签名校验【安全】 - [X] 添加logback日志,便于日后排查问题等 - [ ] 后续是否需要考虑支持http文件流的方式(读取和保存) - [ ] 整体的解决方案给出文档,部署文档(包括OnlyOffice) - [ ] ~~菜单定制、logo、公司名称显示、指向等只支持onlyoffice开发者版本配置~~ > 1.即使封装中间层,onlyoffice document-server 也会直接暴露出来地址,比如下载成pdf、html等 ## 错误代码 | 代码 | 描述 | | :----| :---- | | 0 | success | | 1001 | 目标文档不存在 | | 1002 | 目标文档是目录或空文件 | | 1003 | 目标文档不可读 | | 1004 | 目标文档大小超过限制 | | 1005 | 目标文档格式不正确 | | 1006 | 目标文档md5校验失败 | | 1007 | 目标文档MIME检查失败 | | 1008 | 文件路径不包含扩展名 | | 1009 | 文件路径和名称后缀不匹配 | | 1010 | 目标文档key计算失败 | | 1101 | 文档信息缓存失败 | | 1102 | 从缓存中获取文档信息失败 | | 1201 | 不支持的请求类型 | | -1 | 系统繁忙,请稍后再试... |