Vue3+TS实现将html或富文本编辑器转为Word并下载

news2025/1/20 14:57:38

说明:我用的富文本编辑器是wangEditor:
wangEditor官网

  • 安装
yarn add @wangeditor/editor
# 或者 npm install @wangeditor/editor --save
yarn add @wangeditor/editor-for-vue@next
# 或者 npm install @wangeditor/editor-for-vue@next --save
yarn add html-docx-js-typescript
# 或者  npm install html-docx-js-typescript --save-dev
  • 在所需页面中引入资源
    import '@wangeditor/editor/dist/css/style.css' // 引入 富文本编辑器css
    import { Editor, Toolbar } from '@wangeditor/editor-for-vue'//富文本编辑器
    import { asBlob } from 'html-docx-js-typescript';//将html转为word
    
  • wangeditor+vue3+TS 实现Web 富文本编辑器
  • HTML部分
<el-button type="primary" plain @click="exportDoc">
  导出文档
</el-button>
<div style="border: 1px solid #ccc">
  <Toolbar
    style="border-bottom: 1px solid #ccc"
    :editor="editorRef"
    :default-config="toolbarConfig"
    :mode="mode"
  />
  <Editor
    v-model="valueHtml"
    style="height: 500px; overflow-y: hidden;"
    :default-config="editorConfig"
    :mode="mode"
    @on-created="handleCreated"
  />
</div>
  • JavaScript部分

    <script setup lang="ts">
     // 编辑器实例,必须用 shallowRef
     const editorRef = shallowRef()
     const mode = ref('default')
     // 内容 HTML
     const valueHtml = ref('')
     // 工具栏配置项
     const toolbarConfig: Partial<IToolbarConfig> = {}
     const editorConfig = { placeholder: '请输入内容...', MENU_CONF: {} }
     // 组件销毁时,也及时销毁编辑器
     onBeforeUnmount(() => {
       const editor = editorRef.value
       if (editor == null)
         return
       editor.destroy()
     })
     function handleCreated(editor: any) {
       editorRef.value = editor // 记录 editor 实例,重要!
     }
     // 导出文档
     async function exportDoc() {
       const editor = editorRef.value
       // 将富文本内容拼接为一个完整的html
       const html = editor.getHtml()
       const value =  `<!DOCTYPE html>
       <html lang="en">
          <head>
            <meta charset="UTF-8">
            <title>Document</title>
          </head>
          <body>
             ${html}
          </body>
        </html>
         //  landscape就是横着的,portrait是竖着的,默认是竖屏portrait。
        const data = await asBlob(value, { orientation: 'portrait' }) as Blob
        const a= document.createElement('a')
        a.href = window.URL.createObjectURL(data)
        a.setAttribute('download', 'document.docx')
        a.click()
        // 下载后将标签移除
        a.remove()
     }
    </script>
    
  • 效果图
    • Web 富文本编辑器富文本

      image.png

    • word文档
      image.png

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

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

相关文章

国内验签DV单域名SSL证书怎么购买?

JoySSL所签发的专业版单域名SSL证书可以做到国内验签&#xff0c;数据不出境&#xff0c;安全等级为业内最高。 JoySSL 专业版国际算法DV单域名证书-JoySSLJoySSL专业版国际算法DV单域名证书通过交叉授信方式&#xff0c;实现国产根与欧美根相互验证&#xff0c;完美兼容且自主…

武汉星起航:亚马逊——全球市场中的物流巨擘与技术创新引领者

在全球电商的舞台上&#xff0c;亚马逊凭借其卓越的物流体系、领先的技术创新以及深厚的市场底蕴&#xff0c;稳坐全球市场的头把交椅。其前瞻性的战略布局和不断优化的运营模式&#xff0c;不仅推动了整个电商行业的发展&#xff0c;也为全球消费者带来了前所未有的购物体验。…

C++哈希(个人笔记)

C哈希 1.unordered_mapd1.1unordered_map的构造函数1.2unorder_map的容量1.3unordered_map的迭代器1.4unordered_map的元素访问1.5unorder_map的查找1.6unordered_map的修改操作1.7unordered_map的桶操作 2.unordered_set3.unordered_set和unordered_set的笔试题4.哈希4.1哈希概…

window.localStorage.setItem() 报错

目录标题 一、原因二、快速解决三、彻底解决 一、原因 在使用sessionStorage做缓存处理时&#xff0c;报了如上的错误提示&#xff0c;经查是sessionStorage对大小是有限制的&#xff0c;所以要进行try catch&#xff0c;500KB左右的东西保存起来就会令到Resources变卡&#x…

240W 宽电压输入 AC/DC 导轨式开关电源——TPR/NDR-U240-XS 系列

TPR/NDR-U240-XS 系列导轨式开关电源&#xff0c;额定输出功率为240W&#xff0c;产品输入范围&#xff1a;90-264VAC。提供24V、48V输出&#xff0c;具有短路保护&#xff0c;过载保护等功能&#xff0c;并具备高效率&#xff0c;高可靠性、高寿命、更安全、更稳定等特点&…

YOLOv8_seg训练流程-原理解析[实例分割理论篇]

本篇将介绍一下YOLOv8实例分割网络的训练流程,同样在看此篇文章之前先去看一下预测流程YOLOv8_seg预测流程-原理解析[实例分割理论篇]-CSDN博客 ,还有目标检测任务的训练流程YOLOv8训练流程-原理解析[目标检测理论篇]-CSDN博客 ,这两篇都是前置课程,下图是YOLOv8实例分割的…

【Linux取经路】进程通信之匿名管道

文章目录 一、进程间通信介绍1.1 进程间通信是什么&#xff1f;1.2 进程间通信的目的1.3 进程通信该如何实现 二、管道2.1 匿名管道2.1.1 站在文件描述符角度深入理解管道2.1.2 接口使用2.1.3 PIPE_BUFFER 和 Pipe capacity2.1.4 管道中的四种情况2.1.5 管道特征总结 2.2 匿名管…

八字排盘软件-​无敌八字排盘软件

功能介绍 1.完全免费使用&#xff0c;即使用不需要付费且无任何限制。 2.同时推出手机版电脑版&#xff0c;两版本数据互通互用&#xff0c;即电脑版的数据可以备份到手机版上导入&#xff0c;手机版的数据也可以备份到电脑版上恢复导入&#xff0c;方便手机和电脑共用的朋友。…

前端崽的java study笔记

文章目录 basic1、sprint boot概述2、sprint boot入门3、yml 配置信息书写和获取 持续更新ing~ basic 1、sprint boot概述 sprint boot特性&#xff1a; 起步依赖&#xff08;maven坐标&#xff09;&#xff1a;解决配置繁琐的问题&#xff0c;只需要引入sprint boot起步依赖的…

周围很多朋友都不做java开发了而转换学网络安全,这个值得吗?

在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「java的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 其实说白了&#xff0c;值不值…

在线音乐系统

文章目录 在线音乐系统一、项目演示二、项目介绍三、部分功能截图四、部分代码展示五、底部获取项目&#xff08;9.9&#xffe5;带走&#xff09; 在线音乐系统 一、项目演示 音乐网站 二、项目介绍 基于springbootvue的前后端分离在线音乐系统 登录角色 : 用户、管理员 用…

超详细Redis下载安装图文教程(Win和Linux版)

超级详细 的 Redis 安装教程 说明 Windows 版本的 Redis 是 Microsoft 的开源部门提供的 Redis. 这个版本的 Redis 适合开发人员学习使用&#xff0c;生产环境中使用 Linux 系统上的 Redis, 这里讲解了这两种的安装和下载。按照你们需要的liunx 或window步骤来 就可以了&#x…

Linux sudo 指令

sudo命令 概念&#xff1a; sudo是linux下常用的允许普通用户使用超级用户权限的工具&#xff0c;允许系统管理员让普通用户执行一些或者全部的root命令&#xff0c;如halt&#xff0c;reboot&#xff0c;su等。这样不仅减少了root用户的登录和管理时间&#xff0c;同样也提高…

案例分享 I 千视协助Lentia City 购物中心实现轻量化、数字化转型

随着文娱活动的日益复苏&#xff0c;Lentia City作为奥地利最受欢迎的社交和文化聚集地之一&#xff0c;正逐渐成为人们追逐乐趣和交流的热门去处。这里丰富多彩的音乐表演和活动吸引着大量人群&#xff0c;为城市注入了生机和活力。 这些活动不仅仅是简单的娱乐&#xff0c;它…

社区新零售:家门口的便利与温暖

社区新零售&#xff1a;家门口的便利与温暖 随着都市生活节奏的加快&#xff0c;人们对于便捷、高效的生活方式有了更高的追求。社区新零售&#xff0c;作为零售业的一股新兴力量&#xff0c;正以其独特的魅力&#xff0c;悄然改变着我们的日常生活。 家门口的便利 社区新零…

Python以docker形式部署,flask简易服务器。

公司大部分都是springboot 服务器&#xff0c;有时候用到python写的一些模型&#xff0c;部署在linux上进行处理 首先项目这样&#xff1a; flask就不说了&#xff0c;快捷服务器&#xff0c; # -*- coding: utf-8 -*-from flask import Flask, request# 实例化Flask对象 app…

个人投资黄金td该怎样操作?

黄金TD&#xff0c;即黄金延期交易&#xff0c;是投资者在金融市场上常见的一种操作方式。它允许投资者通过交易所进行黄金买卖&#xff0c;利用黄金价格的波动来赚取差价。对于个人投资者而言&#xff0c;正确理解和操作黄金TD是实现资产增值的关键。本文将详细介绍如何操作黄…

一键追爆款,GPT一键改文‌‍‬⁣⁡​⁤⁢​⁢⁡⁣‬‍‌​​‬ ​‍⁤‬ ‬⁡⁡⁡‍‌‬⁡⁡⁢‬⁤⁢⁢⁤​‍‌​​‬ ​⁣‌,绘唐3,绘唐工具

ai画影满足你的制作要求 一键追爆款&#xff0c;GPT一键改文 入口工具 AI推文小说&漫画解说&解压混剪 人物定义&#xff0c;角色定义&#xff0c;lora转换&#xff0c;模型转换&#xff0c;可视化参考满足 一键追爆款 一键挂机生成&#xff0c;效果更精彩&#xff…

专题模块项目功能说明和运行方法-01

项目集介绍 SpringbootSeries父工程 此模块中只有一个pom.xml文件&#xff0c;是后面所有模块的父模块&#xff0c;主要功能有两个&#xff1a;子模块管理和依赖管理。 类别必选可选基础框架jdk 17 spring-boot-starter 3.2.4spring-boot-starter-web 3.2.4spring-cloud 2023…

【java】代理

什么是代理 假设有一个核心方法叫转账&#xff0c;为了安全性考虑&#xff0c;不能让用户直接访问接口。此时涉及到了代理&#xff0c;这使得用户只能访问代理类&#xff0c;增加了访问限制。 代理的定义&#xff1a;给目标对象提供一个代理对象&#xff0c;并且由代理对象控…