使用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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/725423.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何用python调用C++处理图片

一. 背景 用pyhton可直接调用C,减少重写的工作量;部分逻辑运算,C的执行效率高,可进行加速。 下面就一个简单的C滤镜(彩色图转灰度图)为例,展示python调用C 二. 代码实现 代码结构如下&#x…

Windows桌面运维----第四天

1、U盘故障打不开: 操作方式:WinR打开运行,输入cmd确定,在(C:\Users\Administrator>)后输入chkdsk,空格,输入U盘盘符,例如F:/F,回车,等待修复完成。 2、…

韩国裸机云站群服务器托管租用方案

随着网络技术的飞速发展,站群服务器在网站运营中扮演着越来越重要的角色。韩国裸机云站群服务器,以其独特的优势,如地理位置优越、价格相对较低、技术实力雄厚等,吸引了众多企业的关注。本文将为您详细介绍韩国裸机云站群服务器的…

【TB作品】MSP430G2553,单片机,口袋板, 现场数据采集装置设计

题2 现场数据采集装置设计 便携式数据采集装置将在现场采集到的数据装入装置的内部数存贮器,以待送实验室或试验中心的计算机进行分析处理,由于现场不一定有交流电供电,而且采集到的数据必须保存到送实验室,因此装置必须以电池或蓄…

红米手机RedNot11无法使用谷歌框架,打开游戏闪退的问题,红米手机如何开启谷歌框架

红米手机RedNot11无法使用谷歌框架,打开游戏闪退的问题, 1.问题描述2.问题原因3.解决方案3.1配置谷歌框架:3.1软件优化 4.附图 1.问题描述 红米手机打开安卓APP没有广告,直接闪退,无法使用谷歌框架 异常关键词中包含&…

NavicatforMySQL11.0软件下载-NavicatMySQL11最新版下载附件详细安装步骤

我们必须承认Navicat for MySQL 支援 Unicode,以及本地或远程 MySQL 服务器多连线,使用者可浏览数据库、建立和删除数据库、编辑数据、建立或执行 SQL queries、管理使用者权限(安全设定)、将数据库备份/复原、汇入/汇出数据&…

SAS副总裁Jason Mann:物联网如何让世界变得更美好

TechForge最近采访了数据和人工智能领导者 SAS的物联网副总裁 Jason Mann ,他解释了公司如何有效利用物联网,以及该技术如何改善全球的可持续性。 您认为今年物联网领域的最新发展趋势是什么? 一个主要趋势是GenAI的不断涌现,这进…

计算机网络:运输层 - TCP 流量控制 拥塞控制

计算机网络:运输层 - TCP 流量控制 & 拥塞控制 滑动窗口流量控制拥塞控制慢开始算法拥塞避免算法快重传算法快恢复算法 滑动窗口 如图所示: 在TCP首部中有一个窗口字段,该字段就基于滑动窗口来辅助流量控制和拥塞控制。所以我们先讲解滑…

Spark Core内核调度机制详解(第5天)

系列文章目录 如何构建DAG执行流程图 (掌握)如何划分Stage阶段 (掌握)Driver底层是如何运转 (掌握)确定需要构建多少分区(线程) (掌握) 文章目录 系列文章目录引言一、Spark内核调度(掌握)1.1、内容概述1.2、RDD的依赖1.3、DAG和Stage1.4、Spark Shuffl…

Flink 1.19.1 standalone 集群模式部署及配置

flink 1.19起 conf/flink-conf.yaml 更改为新的 conf/config.yaml standalone集群: dev001、dev002、dev003 config.yaml: jobmanager address 统一使用 dev001,bind-port 统一改成 0.0.0.0,taskmanager address 分别更改为dev所在host dev001 config.…

M1失效后,哪个是观察A股的关键新指标?

M1失效后,哪个是观察A股的关键新指标? 央地支出增速差(地方-中央支出增速的差值)或许是解释沪深300定价更有效的前瞻指标。该数值扩张,则有利于大盘指数,反之亦然,该指标从2017年至今对大盘指数…

网络程序通信的流程---socket与TCP的简单认识

网络程序通信的流程 网络程序通信的流程: 1.通过ip地址找到网络中的设备 2.通过端口号找到对应进程的端口 3.传输数据时还需要使用传输协议(TCP),保证数据的可靠性 4.socket完成进程之间网络数据的传输 ip地址的介绍 IP地址…

在小程序wxml中截取字符串

在微信小程序的WXML中直接进行字符串截取是不被支持的,因为WXML主要负责布局和渲染,不包含数据处理逻辑。 但你可以通过使用微信小程序提供的wxs(WeiXin Script)来实现字符串的截取。 wxs是一种运行在客户端的脚本语言&#xff…

LeetCode 算法:删除链表的倒数第 N 个结点 c++

原题链接🔗:删除链表的倒数第 N 个结点 难度:中等⭐️⭐️ 题目 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出&#xff1a…

opencascade AIS_InteractiveContext源码学习相关枚举 AIS_SelectionScheme AIS_StatusOfPick

AIS_SelectionScheme 枚举 AIS_SelectionScheme 设置交互上下文中的选择方案。 枚举值: AIS_SelectionScheme_UNKNOWN 未定义的方案 AIS_SelectionScheme_Replace 清除当前选择并选择检测到的对象 AIS_SelectionScheme_Add 将检测到的对象添加到当前选择 AIS_…

Artalk-CORS,跨域拦截问题

今天重新部署Artalk之后,遇到了CORS——跨域拦截的问题,卡了好一会记录一下。 起因 重新部署之后,浏览器一直提示CORS,之前在其他项目也遇到过类似的问题,原因就在于跨域问题。

功能测试 之 单模块测试----添加会员

1.需求分析 点击【添加会员】按钮后,页面跳转至添加会员详细页面。 说明: 会员昵称:必填,长度在20个字符(除去空格)以内,(会员昵称)可以重复;登录密码&#x…

Java零基础之多线程篇:线程生命周期

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…

.net 6 api 修改URL为小写

我们创建的api项目,url是[Route(“[controller]”)],类似这样子定义的。我们的controller命名是大写字母开头的,显示在url很明显不是很好看(url不区分大小写)。转换方式: var builder WebApplication.Crea…

【JS重点18】原型链(面试重点)

一:原型链底层原理 以下面一段代码为例,基于原型对象(Star构造函数的原型对象)的继承使得不同构造函数的原型对象关联在一起(此处是最大的构造函数Object原型对象),并且这种关联的关系是一种链…