前端开发中如何在页面加载时自动读取并转换指定的 .docx 文件

前端开发中如何在页面加载时自动读取并转换指定的 .docx 文件,并实现在线预览功能。我在这里分享通过 mammoth.min.js 插件来实现docx在线预览功能

第1:下载地址,大家可以任意选取下面其中一种方式下载

(1)GitHub - mwilliamson/mammoth.js: Convert Word documents (.docx files) to HTML

(2)mammoth (v1.8.0) - Convert Word documents from docx to simple HTML and Markdown | BootCDN - Bootstrap 中文网开源项目免费 CDN 加速服务 铂特优选

第2:在html中引入mammoth.min.js

在你的 HTML 文件中,使用 <script> 标签引入 mammoth.min.js 文件

第3:编写 JavaScript 代码来读取和转换 DOCX 文件

示例代码:docx中出现表格,如何通过mammoth.min.js成功实现在线预览

mammoth 库在转换 DOCX 文件时,默认情况下可能不会完全保留所有的格式和表格结构。为了更好地处理这些问题,styleMap 可以帮助你定义如何将 Word 样式映射到 HTML 样式

<!DOCTYPE html>
<html class="x-admin-sm" lang="en" xmlns:th="http://www.thymeleaf.org">
<head><script type="text/javascript" th:src="@{/js/mammoth.browser.js}"></script><style>body {font-family: Arial, sans-serif;}table {width: 100%;border-collapse: collapse;}th, td {border: 1px solid #ddd;padding: 8px;}th {background-color: #f2f2f2;text-align: left;}</style>
</head>
<body>
<div id="content"></div>
<script>async function loadAndConvertDocx() {const url = 'http://localhost:8080/document.docx?id='+Math.random()try {// 读取 DOCX 文件const response = await fetch(url);const arrayBuffer = await response.arrayBuffer();// 定义 styleMap 以更好地处理表格和格式const styleMap = `                    p => pp[style-name='Heading 1'] => h1:freshp[style-name='Heading 2'] => h2:freshp[style-name='Heading 3'] => h3:freshp[style-name='Heading 4'] => h4:freshp[style-name='Heading 5'] => h5:freshp[style-name='Heading 6'] => h6:freshp[style-name='Normal'] => p:freshtable => tabletr => trtd => tdth => thtable[style-name='Table Normal'] => tabletr[style-name='Table Normal'] => trtd[style-name='Table Normal'] => tdth[style-name='Table Normal'] => thtable[style-name='Table Grid'] => tabletr[style-name='Table Grid'] => trtd[style-name='Table Grid'] => tdth[style-name='Table Grid'] => th`;// 使用 Mammoth 转换 DOCX 文件为 HTMLconst result = await mammoth.convertToHtml({arrayBuffer, styleMap: styleMap});const html = result.value; // The generated HTMLconst messages = result.messages; // Any messages, such as warnings during conversion// 将生成的 HTML 插入到页面中document.getElementById('content').innerHTML = html;} catch (error) {console.error('Error:', error);}}// 页面加载时调用 loadAndConvertDocx 函数window.addEventListener('load', loadAndConvertDocx);
</script>
</body>
</html>

第4:如果你后端使用springboot(版本:2.7.5)框架,可以将某个存放docx文件的目录映射到 http://localhost:8080。这里只需要在application.yml配置 static-locations

spring:web:resources:static-locations: classpath:/META-INF/resources/, classpath:/resources/, classpath:/static/, classpath:/public/, file:D://upload//nursing

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

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

相关文章

好用的远程控制安卓和IOS端的手机软件有哪些?

在数字化时代&#xff0c;我们的工作和娱乐活动越来越依赖于移动设备。无论是在家中、办公室还是旅途中&#xff0c;能够远程控制我们的设备成为了一种高效便捷的需求。市场上涌现出了许多远程控制软件&#xff0c;它们各具特色&#xff0c;旨在提供最佳的用户体验。那么&#…

领夹无线麦克风哪个牌子好?双十一选无线领夹麦克风避开选购陷阱

在多媒体和远程通信日益普及的今天&#xff0c;无线领夹麦克风已成为提升音质和便利性的关键&#xff0c;它们在视频制作、网络直播、在线教育等多个领域中扮演着重要角色。面对市场上众多的产品和技术参数&#xff0c;消费者往往感到无从下手。不过不用过于担心&#xff0c;在…

开发中使用UML的流程_01概述

目录 CIM-1:定义业务流程 CIM-2:分析业务流程 ​CIM-3:定义系统范围 ​PIM-1:分析系统流程 PIM-2:分析业务规则 PIM-3:定义静态结构 PIM-4:定义操作和方法 开发中使用UML的流程,主要分为7部分,具体如下: CIM-1:定义业务流程 定义及分析业务流程是为了尽快理…

ArcGIS/QGIS按掩膜提取或栅格裁剪后栅格数据的值为什么变了?

问题描述&#xff1a; 现有一栅格数据&#xff0c;使用ArcGIS或者QGIS按照矢量边界进行按掩膜提取或者栅格裁剪以后&#xff0c;其值的范围发生了变化&#xff0c;如下&#xff1a; 可以看到&#xff0c;不论是按掩膜提取还是进行栅格裁剪后&#xff0c;其值的范围均与原来栅…

劫持微信聊天记录并分析还原 —— 合并解密后的数据库(三)

本工具设计的初衷是用来获取微信账号的相关信息并解析PC版微信的数据库。 程序以 Python 语言开发&#xff0c;可读取、解密、还原微信数据库并帮助用户查看聊天记录&#xff0c;还可以将其聊天记录导出为csv、html等格式用于AI训练&#xff0c;自动回复或备份等等作用。下面我…

python数据结构基础(7)

本节学习最后一种数据结构---图,在很多问题中应用图可以帮助构建思维空间,快速理清思路,解决复杂问题. 图就是一些顶点的集合,这些顶点通过一系列边链接起来.根据边的有向和无向,图分为有向图和无向图.有时图的边上带有权重,本节暂时不将权重作为重点. 计算机通过邻接表或者邻…

NAS的软件和生态才是王道!谈谈群晖是如何凭实力“躺平”的

NAS的软件和生态才是王道&#xff01;谈谈群晖是如何凭实力“躺平”的 哈喽小伙伴们好&#xff0c;我是Stark-C~ 近几年随着大家对于数据存储和管理需求的增加&#xff0c;以及各大网盘变相收费和涨价&#xff0c;并且还不合时宜的爆出隐私泄露问题。而NAS&#xff08;网络附…

阅读笔记 Contemporary strategy analysis Chapter 14

来源&#xff1a;Robert M. Grant - Contemporary strategy analysis (2018) Chapter 14 External Growth Strategies: Mergers, Acquisitions, and Alliances 合并、收购和联盟 Ⅰ Introduction and Objectives 企业并购与联盟是公司实现快速扩张的重要战略工具。通过这些手段…

Java 8 Stream API 详解

在 Java 8 中&#xff0c;引入了一个全新的 API——Stream API&#xff0c;它与传统的 java.io 包下的 InputStream 和 OutputStream 没有任何关系。Stream API 的引入主要是为了提高程序员在操作集合&#xff08;Collection&#xff09;时的生产力&#xff0c;而这一提升很大程…

VMware替代实战手册:更高效的MySQL数据库迁移方案

数据库作为数字化用户的核心资产&#xff0c;其迁移是一项复杂且重要的任务&#xff0c;特别是在VMware平台替换及IT基础设施更新换代之时&#xff0c;尤其需要保障数据库迁移过程的平稳、流畅。 深信服推出的数据库管理平台&#xff08;DMP&#xff09;是为关系型数据库量身打…

GaussDB高智能--库内AI引擎:模型管理数据集管理

3.2 模型管理 在机器学习算法进行训练后&#xff0c;生成的模型需要进行存储&#xff0c;以便后续推理进行使用。训练过程的时序图如下&#xff1a; 在训练过程中&#xff0c;最后一步是通过调用store_model接口&#xff0c;在系统表gs_model_warehouse中插入一条记录&#…

使用ookii-dialogs-wpf在WPF选择文件夹时能输入路径

在进行WPF开发时&#xff0c;System.Windows.Forms.FolderBrowserDialog的选择文件夹功能不支持输入路径&#xff1a; 希望能够获得下图所示的选择文件夹功能&#xff1a; 于是&#xff0c;通过NuGet中安装Ookii.Dialogs.Wpf包&#xff0c;并创建一个简单的工具类&#xff1a; …

求助帖【如何学习核磁共振的原理】

最近提前进组了 我完全不懂磁共振的相关知识 想问问各位大佬有没有推荐的学习路线 或者是学习资料、论坛都可以的&#xff08;我做的方向是磁共振成像技术&#xff09; 老师给了一本书&#xff0c;但是有点看不懂&#xff0c;全英文的 叫Principles Of Magnetic Resonance …

【自动化测试】如何在jenkins中搭建allure

相信大家在做自动化测试过程中&#xff0c;都会用到自动化测试环境&#xff0c;目前最常见的就是通过容器化方式部署自动化测试环境&#xff0c;但对于一些测试小白&#xff0c;不是很会搭建持续集成环境&#xff0c;特别是从0-1的过程&#xff0c;需要自行搭建很多依赖环境&am…

人才流失预测模型(机器学习)

1. 项目描述 ​ 企业的快速发展离不开人才的支撑&#xff0c;可是现在我国的企业的人才流失严重&#xff0c;人才流失问题现在已经成为了关系企业发展的一个重大的问题。这些企业要想在目前激烈的竞争中快速发展&#xff0c;就需要依靠自身的人力资源的来竞争。只有拥有比对方…

【Mac】安装 VMware Fusion Pro

VMware Fusion Pro 软件已经正式免费提供给个人用户使用&#xff01; 1、下载 【官网】 下拉找到 VMware Fusion Pro Download 登陆账号 如果没有账号&#xff0c;点击右上角 LOGIN &#xff0c;选择 REGISTER 注册信息除了邮箱外可随意填写 登陆时&#xff0c;Username为…

Java版企业电子招标采购系统源码Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis

功能描述 1、门户管理&#xff1a;所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含&#xff1a;招标公告、非招标公告、系统通知、政策法规。 2、立项管理&#xff1a;企业用户可对需要采购的项目进行立项申请&#xff0c;并提交审批&#xff0c;查看所…

【el-pagination的使用及修改分页组件的整体大小修改默认样式的宽度详细教程】

今天遇到个bug&#xff0c;使用element-puls中的分页的时候&#xff0c;长度会超出盒子&#xff0c;今天教大家如何修改el-pagination的宽度&#xff0c;以及修改分页组件的整体大小 直接修改 style"width: 100%; margin-top: 10px"不生效 控制台修改el-pagination…

单体架构的 IM 系统设计

先直接抛出业务背景&#xff01; 有一款游戏&#xff0c;日活跃量&#xff08;DAU&#xff09;在两千左右&#xff0c;虽然 DAU 不高&#xff0c;但这两千用户的忠诚度非常高&#xff0c;而且会持续为游戏充值&#xff1b;为了进一步提高用户体验&#xff0c;继续增强用户的忠…

设计模式之单列模式(7种单例模式案例,Effective Java 作者推荐枚举单例模式)

前言 在设计模式中按照不同的处理方式共包含三大类&#xff1b;创建型模式、结构型模式和行为模式&#xff0c;其中创建型模式目前已经介绍了其中的四个&#xff1b;工厂方法模式、抽象工厂模式、生成器模式和原型模式&#xff0c;除此之外还有最后一个单例模式。 单列模式介绍…