tinymce实现将word中内容(文字图片等)直接粘贴至编辑器中——利用插件tinymce-powerpaste-plugin

TinyMCE是一款易用、且功能强大的所见即所得的富文本编辑器。同类程序有:UEditor、Kindeditor、Simditor、CKEditor、wangEditor、Suneditor、froala等等。
TinyMCE的优势:
开源可商用,基于LGPL2.1
插件丰富,自带插件基本涵盖日常所需功能(示例看下面的Demo-2)
接口丰富,可扩展性强,有能力可以无限拓展功能
界面好看,符合现代审美
提供经典、内联、沉浸无干扰三种模式(详见“介绍与入门”)
对标准支持优秀(自v5开始)
多语言支持,官网可下载几十种语言。

客户对老系统提出一个要求:能直接把word中的图片粘贴进编辑器中,否则一张张上传太麻烦了。
网上找到这个插件tinymce-powerpaste-plugin,可满足客户的要求。

在这里插入图片描述

下载

github插件地址:https://github.com/qhx0807/tinymce-powerpaste-plugin
如果打不开,请到这里下载:https://download.csdn.net/download/snans/88111695

目录

在这里插入图片描述
将插件解压缩到tinymce目录下的plugins里。

代码

1. 简易展示

  tinymce.init({selector: '#tinymce', // css选择器,和jquery的选择器一个道理,建议直接用idlanguage: 'zh_CN', // 需要在官网自己下载一个全局的langs包。同时我提供的powerpaste本身自带一个langs包里面含中文,所以可以100%支持中文。plugins: ['powerpaste', // plugins中,用powerpaste替换原来的paste//...],powerpaste_word_import: 'propmt',// 参数可以是propmt, merge, clear,效果自行切换对比powerpaste_html_import: 'propmt',// propmt, merge, clearpowerpaste_allow_local_images: true,paste_data_images: true,images_upload_handler: function (blobInfo, success, failure) {// 这个函数主要处理word中的图片,并自动完成上传;// ajaxUpload是自己定义的一个函数;在回调中,记得调用success函数,传入上传好的图片地址;// blobInfo.blob() 得到图片的file对象;ajaxUpload(blobInfo.blob()).then((data) => {// 上传成功后,调用success函数传入图片地址success(data.uploadedImageUrl)})},// tinymce的其他配置参数})

2.与后台交互

  tinymce.init({selector: '#tinymce', // css选择器,和jquery的选择器一个道理,建议直接用idlanguage: 'zh_CN', // 需要在官网自己下载一个全局的langs包。同时我提供的powerpaste本身自带一个langs包里面含中文,所以可以100%支持中文。plugins: ['powerpaste', // plugins中,用powerpaste替换原来的paste//...],powerpaste_word_import: 'propmt',// 参数可以是propmt, merge, clear,效果自行切换对比powerpaste_html_import: 'propmt',// propmt, merge, clearpowerpaste_allow_local_images: true,paste_data_images: true,images_upload_handler: function (blobInfo, success, failure, progress) {var xhr, formData;xhr = new XMLHttpRequest();xhr.withCredentials = false;xhr.open('POST', 'postAcceptor.php');xhr.upload.onprogress = function(e){progress(e.loaded / e.total * 100);}xhr.onload = function() {var json;if (xhr.status == 403) {failure('HTTP Error: ' + xhr.status, { remove: true });return;}if (xhr.status < 200 || xhr.status >= 300 ) {failure('HTTP Error: ' + xhr.status);return;}json = JSON.parse(xhr.responseText);if (!json || typeof json.location != 'string') {failure('Invalid JSON: ' + xhr.responseText);return;}success(json.location);};xhr.onerror = function () {failure('Image upload failed due to a XHR Transport error. Code: ' + xhr.status);}formData = new FormData();formData.append('file', blobInfo.blob(), blobInfo.filename());formData.append("id", "abc123");xhr.send(formData);}

粘贴

在这里插入图片描述
无论移除格式还是保持格式,图片都能正常显示,主要是文字格式的清理。

其它

网上网友总结:

3.3.3-308版本

升级内容:

  1. 修复了第一次复制粘贴图片进入tinymce时,images_upload_handler会调用2次的bug;
  2. word中如有图片无法上传(比如图片格式错误,word中可以显示但是tinymce无法显示)增加了错误提示;
  3. 体积更小,大概小了30%;
  4. 猜测:应该与高版本tinymce兼容的更好。因为2.1.10-115是2017年初时候的版本了,那时候对应tinymce3.x,现在是tinymce4.9;

4.0.1-317版本

适用tinymce5.0以上!!!用在5.0以下版本无效。

参考

tinymce实现从word直接粘贴并自动上传图片 powerpaste plugin source code
TinyMCE是什么?
TinyMCE简介与入门 \ 上传图片和文件
images_upload_handler(图片上传自定义实现)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

技术笔记2023076 rBoot学习7

技术笔记2023076 rBoot学习7 继续之前的学习。 代码分析&#xff1a;函数find_image() // prevent this function being placed inline with main // to keep mains stack size as small as possible // dont mark as static or itll be optimised out when // using the ass…

给APK签名—两种方式(flutter android 安装包)

前提&#xff1a;给未签名的apk签名&#xff0c;可以先检查下apk有没有签名 通过命令行查看&#xff1a;打开终端或命令行界面&#xff0c;导入包含APK文件的目录&#xff0c;并执行以下命令&#xff1a; keytool -printcert -jarfile your_app.apk 将 your_app.apk替换为要检查…

String 的 switch-case 实现原理

前面我们已经知道 String 的 switch-case 实现原理 依据 case 值的稀疏程度&#xff0c;分别由两个指令 - tableswitch 和 lookupswitch 实现&#xff0c;但是这两个指令都支持整型&#xff0c; 如何让 String 类型的值 也支持 String 的 switch-case 实现原理 public class T…

【数据结构】--189.轮转数组

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

Rethinking the Image Fusion(PMGI)

1.摘要 本文提出了一种基于梯度和强度比例维护&#xff08;PMGI&#xff09;的快速统一图像融合网络&#xff0c;可以端到端实现各种图像融合任务&#xff0c;包括红外和可见图像融合、多曝光图像融合、医学图像融合、多焦点图像融合和全色增强。我们将图像融合问题统一为源图…

保姆级系列教程-玩转Fiddler抓包教程(1)-HTTP和HTTPS基础知识

1.简介 有的小伙伴或者童鞋们可能会好奇地问&#xff0c;不是讲解和分享抓包工具了怎么这里开始讲解HTTP和HTTPS协议了。这是因为你对HTTP协议越了解&#xff0c;你就能越掌握Fiddler的使用方法&#xff0c;反过来你越使用Fiddler&#xff0c;就越能帮助你了解HTTP协议。 Fid…

Java | 继承、多态、抽象类与接口

目录 一、类的继承 二、Object类 2.1 getClass()方法 2.2 toString()方法 2.3 equals()方法 三 、对象类型的转换 3.1 向上转换 3.2 向下转型 四、使用instanceof关键字判断对象类型 五、方法的重载 六、final关键字 6.1 final变量 6.2 final方法 6.3 final类 七…

安装x265

一、编译libx265源码 libx265是用CMAKE编译的&#xff0c;故先下cmake&#xff0c;我是centos系统&#xff0c;命令&#xff1a; yum install cmake -y进入目录./x265_1.9/build/linux/下&#xff0c;执行脚本&#xff1a; sh make-Makefiles.bash选择好之后&#xff0c;输入…

【多模态】19、RegionCLIP | 基于 Region 来实现视觉语言模型预训练

文章目录 一、背景二、方法2.1 Region-based Language-Image Pretraining2.2 目标检测的迁移学习 三、效果3.1 数据集3.2 实现细节3.3 结果 论文&#xff1a; RegionCLIP: Region-based Language-Image Pretraining 代码&#xff1a;https://github.com/microsoft/RegionCLIP …

了解Unity编辑器之组件篇Playables和Rendering(十)

Playables 一、Playable Director&#xff1a;是一种用于控制和管理剧情、动画和音频的工具。它作为一个中央控制器&#xff0c;可以管理播放动画剧情、视频剧情和音频剧情&#xff0c;以及它们之间的时间、顺序和交互。 Playable Director组件具有以下作用&#xff1a; 剧情控…

Vue中使用echarts

1 安装 npm install -g cnpm --registryhttps://registry.npm.taobao.org cnpm install echarts -S 2 main.js引入 3 引入成功

perl 拼接字符串

在Perl中&#xff0c;你可以使用不同的方法来拼接字符串。以下是一些常用的方法&#xff1a; 使用.运算符拼接字符串&#xff1a; my $str1 "Hello, "; my $str2 "World!"; my $result $str1 . $str2; print $result; # 输出&#xff1a;Hello, Worl…

探索Java API学习路线:从基础到高级的全面指南

文章目录 第一阶段&#xff1a;入门基础1. 环境准备2. 学习Java基础 第二阶段&#xff1a;熟悉常用的Java API1. Java标准库2. Java API文档 第三阶段&#xff1a;深入学习特定领域的Java API1. Java GUI API2. Java数据库连接&#xff08;JDBC&#xff09;API3. Java多线程API…

【蓝图】p44简单解密机关

p44简单解密机关 p44简单解密机关文字提示开门文字提示开灯For Each Loop和For Each Loop With Break区别For Each LoopFor Each Loop With Break小操作&#xff1a;改变走线Execute Console Command(执行控制台命令) p44简单解密机关 文字提示开门 创建Actor蓝图类&#xff…

Python及PyCharm安装教程

1.Python安装教程 python官网下载windows64位python installer&#xff1b; 这里选择windows installer(64-bit) 打开下载完成的installer文件 记得勾选上Add python.exe to PATH&#xff0c;再点击Install Now&#xff1b; &#xff08;如果想要更改安装位置&#xff0c;需要…

【使用时空RBF-NN进行非线性系统识别】实现了 RBF、分数 RBF 和时空 RBF 神经网络,用于非线性系统识别研究(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 2.1 算例1 2.2 算例2 &#x1f389;3 参考文献 &#x1f308;4 Matlab代码实现 &#x1f4a5;1 概述 本文用于非线性系统识别任务的径向基函数神经网络&#xff08;RBF-NN&#xff09;的三种变体。特别是&#xff0c;我实现…

MYSQL DCL语句

MySQL DCL语句 简介 DQL是用于查询和检索数据库数据的重要工具。它具有丰富的功能和灵活性&#xff0c;可以根据不同的查询需求进行条件过滤、排序、聚合计算等操作。通过合理使用DQL&#xff0c;可以从数据库中提取有用的数据以进行数据分析和决策支持。 DCL语句的分类 DC…

Swoole协程系统HTTP服务

先启动宝塔 /etc/init.d/bt start 源码参考 https://github.com/zhangyue0503/swoole/tree/main/4.Swoole%E5%8D%8F%E7%A8%8B 对于异步来说&#xff0c;我们需要监听事件&#xff0c;并且监听的进程是并发的&#xff0c;所以会有一个问题&#xff0c;那就是无法保证前后顺…

33.Oracle的Sid重复问题

oracle安装sid重复问题 Oracle卸载后再次安装&#xff0c;设置的SID相同出现“指定的SID在本机上已经存在。请指定一个不同的SID。” 1. SID简介 SID也就是安全标识符&#xff08;Security Identifiers&#xff09;&#xff0c;是标识用户、组和计算机帐户的唯一的号码。在第…

redis到底几个线程?

通常我们说redis是单线程指的是从接收客户端请求->解析请求->读写->响应客户端这整个过程是由一个线程来完成的。这并不意味着redis在任何场景、任何版本下都只有一个线程 为何用单线程处理数据读写&#xff1f; 内存数据储存已经很快了 redis相比于mysql等数据库是…