当前位置: 首页 > news >正文

使用Docker在Mac上部署OnlyOffice,预览编辑word、excel、ppt非常好

前端编辑word、ppt文档,开源免费方案并没有找到合适的,像wps、石墨文档都是自研的方案。实现过程中wps采用的svg方案,而石墨文档采用的是canvas,它们均是自己来实现编辑器,不依赖浏览器提供的编辑器(contenteditable)。在实现过程中,其实可以参考一些开源方案,比如OnlyOffice。

端午节的时候在mac上使用docker部署了OnlyOffice,体验了一下,无论是对office文档的还原还是编辑体验,效果都非常不错。支持word、ppt、excel、pdf等文档的预览与编辑,而且完全开源,但并不免费。

使用docker部署比较简单,基本几个命令就能搞定,部署过程中遇到了一些坑,比如:

4f05dee12ee11f4993814d072509a1c6.png

网上基本都能找到对应的方案。

部署完后,我们先看一下效果,可以看到一个文档的管理界面:

0dd0755943b828e3903a884d4f963c06.png

我做了一个word文档,内容包含:表格、段落、标题、SmartArt、图文环绕、富文本效果(对齐、字体颜色、字号等)、页眉页脚、水印、文本框、项目符号、图片、图表、艺术字。

a84edabf388a31902df277e59a74ce11.png

还原效果差不多能达到90%左右,有一些badcase,比如:

1. 图文环绕效果与标题重叠了

OnlyOffice效果:

6e951892696f8abd3d9769062d03930d.png

Office 效果:

dab5c19924660bbf2bedfef520e07f0e.png

2.项目符号

OnlyOffice效果:

b55aef17538a5b903be03219d9d23174.png

Office 效果:

3d0d41a016fff031552e0eb0611263c5.png

3.页面排版内容不一致

Office整页的内容和OnlyOffice有明显的差异。

总的来说,还原效果有一些差异,但是整体比较靠谱。WPS网页端虽然还原效果看着比较好,但是比如SmartArt、艺术字这种效果,直接降级处理成了图片。而OnlyOffice实现了真正的还原。

5b66239e9ef8fc39b597a900977e9de4.png

我们再看看PPT效果,使用我以前分享的一个PPT,效果比较好。

41a1ad45245ab18f8c3894ed9561b81a.png

我们再看看Excel效果:

38ce51384f2becfbf50e87353494a86a.png

PDF的效果:

70ed0fb049dc4b126c19bdabefc75a3f.png

总的来说OnlyOffice的效果实现的非常好,而且是开源的,支持的文档格式也比较多DOC, DOCX, TXT, ODT, RTF, ODP, EPUB, ODS, XLS, XLSX, CSV, PPTX, HTML。关于前端编辑器代码实现可以参考:https://github.com/ONLYOFFICE/sdkjs

相关文章:

  • 【STM32】矩阵计算器
  • 反激开关电源EMI电路选型及计算
  • mybatis中yml配置log-impl是什么?有什么用?
  • FreeRTOS源码分析
  • 面试笔试--通用事件处理框架编写一个日志缓存插件
  • 技术差异,应用场景;虚拟机可以当作云服务器吗
  • SambaLingo——教会大模型新语言
  • 社区服务小程序功能设计,社区服务小程序的功能有哪些?
  • NLP基础知识——文本处理、张量表示、文本数据分析
  • 支持向量机 (SVM) 算法详解
  • 测试用例编写指导
  • PHP入门教程4:文件处理和表单处理
  • SPI协议——读取外部SPI Flash ID
  • Flink 窗口触发器
  • 【OpenHarmony开发】自定义系统应用之实践
  • (三)从jvm层面了解线程的启动和停止
  • [deviceone开发]-do_Webview的基本示例
  • AHK 中 = 和 == 等比较运算符的用法
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • Js基础知识(四) - js运行原理与机制
  • Promise面试题,控制异步流程
  • python学习笔记-类对象的信息
  • Redis学习笔记 - pipline(流水线、管道)
  • Vue2.x学习三:事件处理生命周期钩子
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 回流、重绘及其优化
  • 基于Android乐音识别(2)
  • 简单实现一个textarea自适应高度
  • 深入浅出Node.js
  • 微信小程序填坑清单
  • 写代码的正确姿势
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 通过调用文摘列表API获取文摘
  • #### go map 底层结构 ####
  • #QT(智能家居界面-界面切换)
  • #面试系列-腾讯后端一面
  • #微信小程序:微信小程序常见的配置传值
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (20)docke容器
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (Matlab)使用竞争神经网络实现数据聚类
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (二)学习JVM —— 垃圾回收机制
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (九十四)函数和二维数组
  • (六)vue-router+UI组件库