富文本:vue +tinymce tinymce-vue+powerpaste可复制word

2024-04-12 18:32

本文主要是介绍富文本:vue +tinymce tinymce-vue+powerpaste可复制word,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

需求:需要从word复制到富文本中,可以编辑,转化为html传给后端生成pdf

1.安装vue-cli3 (注意:安装的组件版本有限制,否则没有效果或报错

1.卸载vue-cli 2.0+npm uninstall vue-cli -g
2.安装vue-cli3npm i -g @vue/cli

2.下载tinymce 和  tinymce-vue(指定版本)

npm i tinymce -S   // tinymce 5.x 版本
npm install @tinymce/tinymce-vue@3.0.1 -S

  

 3.下载tinymce汉化包(默认英文)

    下载地址:Language Packages | Trusted Rich Text Editor | TinyMCE

 4.将node-modules中tinymce的skins文件夹 和 下载语言包langs

   复制到public -》tinymce的文件夹下面

    

 vue中使用

(1)html: 

<template> <el-dialog :title="title" :visible.sync="open" width="60%" append-to-body> <el-form ref="form" :model="form" :rules="rules" label-width="auto"><el-form-item label="富文本内容"><editor  id="tinymce" v-model="form.content" :init="init" v-if="open"/></el-form-item><div slot="footer" class="dialog-footer"><el-button type="primary" @click="submitForm">确 定</el-button><el-button @click="cancel">取 消</el-button></div></el-dialog>
</template>

 (2)js:tinymce已自带常用插件,但是很多默认是不启用的,可以根据需要引入配置

遇到的问题:

1.引入皮肤

 import 'tinymce/icons/default' 

     

 2.①配置引用路径错误    ②未引用但在plugns里面声明了

       

 3.引入的插件太多自动隐藏-》更多(点击显示)想要全都显示出来

//  工具之间用空格分隔,| 表示显示一个分块符

 4.在 el-dialog 弹框里插件的部分功能页面会被遮盖 解决层级问题

.tox-tinymce-aux{
z-index: 3000 !important;
}

 

<script>
//引入tinymceimport tinymce from 'tinymce/tinymce'import Editor from '@tinymce/tinymce-vue'import 'tinymce/themes/silver/theme'import 'tinymce/icons/default' //皮肤// import 'tinymce/skins/ui/oxide/skin.css'  //插件pluginsimport 'tinymce/plugins/image'// 插入上传图片插件import 'tinymce/plugins/media'// 插入视频插件import 'tinymce/plugins/table'// 插入表格插件import 'tinymce/plugins/link' //超链接插件import 'tinymce/plugins/code' //代码块插件import 'tinymce/plugins/lists'// 列表插件import 'tinymce/plugins/contextmenu'  //右键菜单插件// import 'tinymce/plugins/wordcount' // 字数统计插件// import 'tinymce/plugins/colorpicker' //选择颜色插件import 'tinymce/plugins/textcolor'  //文本颜色插件import 'tinymce/plugins/fullscreen' //全屏import 'tinymce/plugins/help'       // 帮助import 'tinymce/plugins/charmap' import 'tinymce/plugins/paste'   //支持粘贴图片import 'tinymce/plugins/print'   //打印import 'tinymce/plugins/preview'  // 预览import 'tinymce/plugins/hr'  // 水平线import 'tinymce/plugins/anchor'import 'tinymce/plugins/pagebreak'// import 'tinymce/plugins/spellchecker'import 'tinymce/plugins/searchreplace'import 'tinymce/plugins/visualblocks'import 'tinymce/plugins/visualchars'import 'tinymce/plugins/insertdatetime'import 'tinymce/plugins/nonbreaking'// import 'tinymce/plugins/autosave'import 'tinymce/plugins/fullpage'import 'tinymce/plugins/toc'export default {name: "Article",components: {Editor, //注册组件},data() {return {init: {language_url: '/tinymce/langs/zh_CN.js',//中文语言包的路径language: 'zh_CN',//语言skin_url: '/tinymce/skins/ui/oxide',//skin路径height: 320,//编辑器高度// width:'80%',//工具栏toolbar:['newdocument undo redo | formatselect  | copy  selectall| bold italic 
underline strikethrough |codeformat blockformats| superscript subscript  | forecolor backcolor | alignleft aligncenter alignright alignjustify | outdent indent |  removeformat ','code  bullist numlist | lists image media table  |fullscreen help toc fullpage restoredraft nonbreaking insertdatetime visualchars visualblocks searchreplace pagebreak anchor charmap  pastetext print preview hr | link unlink uploadimage','textcolor contextmenu'],//声明插件plugins: ['lists image media table  code fullscreen help toc insertdatetime  searchreplace  link charmap  hr' ,'fullpage  nonbreaking  visualchars visualblocks  pagebreak print preview                              anchor' ,'textcolor  contextmenu powerpaste'],fontsize_formats: "8px 10px 12px 14px 16px 18px 20px 22px 24px 26px 28px 30px 32px 34px 36px",branding: false, //  是否显示底部状态栏menubar: false, //  配置菜单栏(设置为false则隐藏)//添加额外的插件:powerpasteexternal_plugins: {'powerpaste': `/tinymce/powerpaste/plugin.min.js`//${this.baseUrl}},powerpaste_word_import: 'merge',// 参数:propmt, merge, clearpowerpaste_html_import: 'merge',// propmt, merge, clearpowerpaste_allow_local_images: true,//粘贴图片//上传图片images_upload_handler: (blobInfo, success, failure) => {const img = 'data:image/jpeg;base64,' + blobInfo.base64()success(img)}},};},mounted(){tinymce.init({})},methods: {}
};
</script>

5.安装powerpaste插件(powerpaste-4.0.1-317 版本低会有bug提示初始化失败)

TinyMCE Demo powerPaste_不知名的研发小码农-CSDN博客 

/**    实现从word复制过来的时候保持原有格式与样式      **/(可以粘贴图片

粘贴图片:可以拖拽如果是从word复制的要右击复制才可以显示否则显示空白

 放在public文件夹下面

//    添加扩展插件external_plugins: {'powerpaste': '/static/tinymce/powerpaste/plugin.min.js'}powerpaste_word_import: 'merge',// 参数可以是propmt, merge, clear,效果自行切换对比powerpaste_html_import: 'merge',// propmt, merge, clearpowerpaste_allow_local_images: true,

 6.实现 图片上传    会将上传的图片转换展示信息点击保存展示图片

    ①没有调用后端接口版   ②调用接口

 

①没有调用后端接口版  

images_upload_handler: (blobInfo, success, failure) => {const img = 'data:image/jpeg;base64,' + blobInfo.base64()success(img)}

 ②调用接口  暂无 

 

 

 最后实现效果图:

 

参考(感谢各位大佬的教程):

vue-cli3+tinymce5 在vue中使用tinymce富文本编辑器,从word复制粘贴过来的文本基本保持原本格式 - 车载皖 - 博客园

Vue环境下tinymce简易教程(优化图片上传+powerpaste插件配置指南+主题切换与生成) - 简书

在vue中使用tinymce富文本编辑器,解决tinymce在dialog对话框中层级太低的问题 - Hakuna__Matata - 博客园

Vue tinymce富文本编辑器整合_寻梦无痕-CSDN博客_tinymce 

vue+tinymce5 富文本编辑器使用、踩坑_muxu85的博客-CSDN博客_vue+tinymce 

可以看多个工具栏插件配置:TinyMCE工具栏配置详解_Clew123的博客-CSDN博客_tinymce 

Vue 自定义富文本编辑器 tinymce 支持导入 word 模板_haoxiaoyong1014的博客-CSDN博客_vue word编辑器 

 

这篇关于富文本:vue +tinymce tinymce-vue+powerpaste可复制word的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/897912

相关文章

[word] word设置上标快捷键 #学习方法#其他#媒体

word设置上标快捷键 办公中,少不了使用word,这个是大家必备的软件,今天给大家分享word设置上标快捷键,希望在办公中能帮到您! 1、添加上标 在录入一些公式,或者是化学产品时,需要添加上标内容,按下快捷键Ctrl+shift++就能将需要的内容设置为上标符号。 word设置上标快捷键的方法就是以上内容了,需要的小伙伴都可以试一试呢!

RedHat运维-Linux文本操作基础-AWK进阶

你不用整理,跟着敲一遍,有个印象,然后把它保存到本地,以后要用再去看,如果有了新东西,你自个再添加。这是我参考牛客上的shell编程专项题,只不过换成了问答的方式而已。不用背,就算是我自己亲自敲,我现在好多也记不住。 1. 输出nowcoder.txt文件第5行的内容 2. 输出nowcoder.txt文件第6行的内容 3. 输出nowcoder.txt文件第7行的内容 4. 输出nowcode

vue, 左右布局宽,可拖动改变

1:建立一个draggableMixin.js  混入的方式使用 2:代码如下draggableMixin.js  export default {data() {return {leftWidth: 330,isDragging: false,startX: 0,startWidth: 0,};},methods: {startDragging(e) {this.isDragging = tr

vue项目集成CanvasEditor实现Word在线编辑器

CanvasEditor实现Word在线编辑器 官网文档:https://hufe.club/canvas-editor-docs/guide/schema.html 源码地址:https://github.com/Hufe921/canvas-editor 前提声明: 由于CanvasEditor目前不支持vue、react 等框架开箱即用版,所以需要我们去Git下载源码,拿到其中两个主

React+TS前台项目实战(十七)-- 全局常用组件Dropdown封装

文章目录 前言Dropdown组件1. 功能分析2. 代码+详细注释3. 使用方式4. 效果展示 总结 前言 今天这篇主要讲全局Dropdown组件封装,可根据UI设计师要求自定义修改。 Dropdown组件 1. 功能分析 (1)通过position属性,可以控制下拉选项的位置 (2)通过传入width属性, 可以自定义下拉选项的宽度 (3)通过传入classN

js+css二级导航

效果 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Con

基于Springboot + vue 的抗疫物质管理系统的设计与实现

目录 📚 前言 📑摘要 📑系统流程 📚 系统架构设计 📚 数据库设计 📚 系统功能的具体实现    💬 系统登录注册 系统登录 登录界面   用户添加  💬 抗疫列表展示模块     区域信息管理 添加物资详情 抗疫物资列表展示 抗疫物资申请 抗疫物资审核 ✒️ 源码实现 💖 源码获取 😁 联系方式 📚 前言 📑博客主页:

vue+el国际化-东抄西鉴组合拳

vue-i18n 国际化参考 https://blog.csdn.net/zuorishu/article/details/81708585 说得比较详细。 另外做点补充,比如这里cn下的可以以项目模块加公共模块来细分。 import zhLocale from 'element-ui/lib/locale/lang/zh-CN' //引入element语言包const cn = {mess

vue同页面多路由懒加载-及可能存在问题的解决方式

先上图,再解释 图一是多路由页面,图二是路由文件。从图一可以看出每个router-view对应的name都不一样。从图二可以看出层路由对应的组件加载方式要跟图一中的name相对应,并且图二的路由层在跟图一对应的页面中要加上components层,多一个s结尾,里面的的方法名就是图一路由的name值,里面还可以照样用懒加载的方式。 页面上其他的路由在路由文件中也跟图二是一样的写法。 附送可能存在

vue+elementUI下拉框联动显示

<el-row><el-col :span="12"><el-form-item label="主账号:" prop="partyAccountId" :rules="[ { required: true, message: '主账号不能为空'}]"><el-select v-model="detailForm.partyAccountId" filterable placeholder="