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

news/2024/11/12 15:01:22/

前端开发中如何在页面加载时自动读取并转换指定的 .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.ppmy.cn/news/1545751.html

相关文章

华为HarmonyOS打造开放合规的广告生态 - Banner广告

场景介绍 Banner广告是在应用程序顶部、中部或底部占据一个位置的矩形图片&#xff0c;广告内容每隔一段时间会自动刷新。 接口说明 接口名 描述 AutoAdComponent(adParam: advertising.AdRequestParams, adOptions: advertising.AdOptions, displayOptions: advertising.Ad…

spark的学习-03

RDD的创建的两种方式&#xff1a; 方式一&#xff1a;并行化一个已存在的集合 方法&#xff1a;parallelize 并行的意思 将一个集合转换为RDD 方式二&#xff1a;读取外部共享存储系统 方法&#xff1a;textFile、wholeTextFile、newAPIHadoopRDD等 读取外部存储系统的数…

【求职】个人介绍

写这个主要原因想让别人了解你吧&#xff0c;工作跟恋爱一样喜欢才能好好去做&#xff0c;不然都是痛苦。最后可能钱没挣到还有一身病。我也面试很多人&#xff0c;面试最大痛点就是无法短时间内了解对方&#xff0c;面试者自己不说&#xff0c;我如果问不到对方优势&#xff0…

Python调用苏信通接口发送短信

毫无征兆的情况下&#xff0c;业务经理通知我&#xff0c;融合云信下架了&#xff0c;当时心里就是一段五味陈杂啊&#xff0c;关键咱也没得选啊&#xff0c;看来接口是要重新开发了。好在业务经理又推荐了苏信通&#xff0c;登录了UI之后&#xff0c;返现功能对比融合云信少了…

【go从零单排】泛型(Generics)、链表

&#x1f308;Don’t worry , just coding! 内耗与overthinking只会削弱你的精力&#xff0c;虚度你的光阴&#xff0c;每天迈出一小步&#xff0c;回头时发现已经走了很远。 &#x1f4d7;概念 在Go语言中&#xff0c;泛型&#xff08;Generics&#xff09;允许你编写可以处理…

WiFi一直获取不到IP地址是怎么回事?

在当今这个信息化时代&#xff0c;WiFi已成为我们日常生活中不可或缺的一部分。无论是家庭、办公室还是公共场所&#xff0c;WiFi都为我们提供了便捷的无线互联网接入。然而&#xff0c;有时我们可能会遇到WiFi连接后无法获取IP地址的问题&#xff0c;这不仅影响了我们的网络使…

UE5.4 PCG 获取地形Layer

使用AttributeFilter&#xff1a;属性过滤器 节点 设置地形Layer名称和权重 效果&#xff1a;

基于汇编语言实现的彩色黑白棋游戏

一、软件背景介绍 1.1 背景介绍 黑白棋在西方和日本很流行。游戏通过相互翻转对方的棋子,最后以棋盘上谁的棋子多来判断胜负。它的游戏规则简单,因此上手很容易,但是它的变化又非常复杂。有一种说法是:只需要几分钟学会它,却需要一生的时间去精通它。 黑白棋是 19 世纪…