当前位置:首页 » 《关于电脑》 » 正文

前端实现word文档预览和内容提取

4 人参与  2024年04月05日 12:10  分类 : 《关于电脑》  评论

点击全文阅读


需求

上一篇写了excel文档解析,顺便就看看word文档。

解决问题

1.前端在浏览器预览word文档。

2.可以直接提取word文档内容

利用技术

预览文档--docx-preview

    <script src="https://cdn.jsdelivr.net/npm/docx-preview@0.1.15/dist/docx-preview.js"></script>

提取文档内容--mammoth

    <script src="https://cdn.bootcdn.net/ajax/libs/mammoth/1.6.0/mammoth.browser.min.js"></script>

预览文档实现过程

// HTML<div id="preview"></div>

实现预览功能

renderAsync接收四个参数

1.document: 数据格式可以为Blob | ArrayBuffer | Uint8Array, // could be any type that supported by JSZip.loadAsync

2.bodyContainer: 渲染的区域

3.styleContainer: 通常用于指定一个HTML元素,该元素将用于包含和管理渲染文档所需的样式信息,包括字体、颜色、布局等。

4.options:{} 具体参数看文档

// JavaScriptconst onWord = (event) => {    let reader = new FileReader();    let file = event.target.files[0];    let options = { inWrapper: false, ignoreWidth: true, ignoreHeight: true }    docx.renderAsync(file, document.getElementById("preview"), null, options)}

提取word文档实现过程

1.extractRawText--转文字;

2.convertToHtml--转HTML;

3.convertToMarkdown--转Markdown 文档

const onWord = (event) => {    let reader = new FileReader();    let file = event.target.files[0];    if (file) {        reader.onload = function (e) {            const data = e.target.result;            // 转文字            mammoth.extractRawText({ arrayBuffer: data }).then(function (displayResult) {                wordData.value = displayResult.value            }).done();            // 转HTML            mammoth.convertToHtml({ arrayBuffer: data }).then(function (displayResult) {                console.log(displayResult);            }).done();            // 转Markdown 文档。            mammoth.convertToMarkdown({ arrayBuffer: data }).then(function (displayResult) {                console.log(displayResult);            }).done();        };        reader.readAsArrayBuffer(file);    }}

word预览

效果预览

完整代码如下

<!DOCTYPE html><html lang="en"><head>    <title>上传word文件</title>    <style>        * {            margin: 0;            padding: 0;        }        .container {            padding: 0 50px;        }        .operation {            padding: 20px;        }        .btn {            min-width: 50px;            font-size: 20px;            color: #fff;            background: #118ee9;            margin: 0 20px 0 0;            padding: 8px;            border: none;            border-radius: 4px;            box-sizing: border-box;        }        .item {            width: 350px;            box-sizing: border-box;            padding: 4px 14px 4px 14px;            color: #000;            font-size: 12px;            background: #fff;        }    </style>    <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>    <script src="https://cdn.bootcdn.net/ajax/libs/mammoth/1.6.0/mammoth.browser.min.js"></script>    <script src="https://cdn.jsdelivr.net/npm/jszip@3.10.1/dist/jszip.min.js"></script>    <script src="https://cdn.jsdelivr.net/npm/docx-preview@0.1.15/dist/docx-preview.js"></script></head><body>    <div class="container" id="app">        <div class="operation">            <button class="btn" @click="uploadFile">上传word文件</button>        </div>        <br>        <div v-if="wordData">{{wordData}}</div>        <br>        <div id="preview"></div>    </div>    <script>        const { createApp, ref, onMounted } = Vue        createApp({            setup() {                let wordData = ref('')                const uploadFile = (mark) => {                    let inputEle = document.createElement('input')                    inputEle.type = 'file'                    inputEle.accept = '.doc,.docx,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document'                    inputEle.click()                    inputEle.addEventListener('input', (event) => {                        onWord(event)                    })                };                const onWord = (event) => {                    let reader = new FileReader();                    let file = event.target.files[0];                    let options = { inWrapper: false, ignoreWidth: true, ignoreHeight: true }                    docx.renderAsync(file, document.getElementById("preview"),null, options)                    let fileName = file.name                    if (file) {                        reader.onload = function (e) {                            const data = e.target.result;                            // 转文字                            mammoth.extractRawText({ arrayBuffer: data }).then(function (displayResult) {                                wordData.value = displayResult.value                            }).done();                            // 转HTML                            mammoth.convertToHtml({ arrayBuffer: data }).then(function (displayResult) {                                console.log(displayResult);                            }).done();                            // 转Markdown 文档。                            mammoth.convertToMarkdown({ arrayBuffer: data }).then(function (displayResult) {                                console.log(displayResult);                            }).done();                        };                        reader.readAsArrayBuffer(file);                    }                }                return {                    wordData,                    uploadFile,                    onWord,                }            }        }).mount('#app')    </script></body></html>


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/90719.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 祖母寿宴,侯府冒牌嫡女被打脸了(沈屿安秦秀婉)阅读 -
  • 《雕花锦年,昭都旧梦》(裴辞鹤昭都)完结版小说全文免费阅读_最新热门小说《雕花锦年,昭都旧梦》(裴辞鹤昭都) -
  • 郊区41号(许洛竹王云云)完整版免费阅读_最新全本小说郊区41号(许洛竹王云云) -
  • 负我情深几许(白诗茵陆司宴)完结版小说阅读_最热门小说排行榜负我情深几许白诗茵陆司宴 -
  • 九胞胎孕妇赖上我萱萱蓉蓉免费阅读全文_免费小说在线看九胞胎孕妇赖上我萱萱蓉蓉 -
  • 为保白月光,侯爷拿我抵了债(谢景安花田)小说完结版_完结版小说全文免费阅读为保白月光,侯爷拿我抵了债谢景安花田 -
  • 陆望程映川上官硕《我的阿爹是带攻略系统的替身》最新章节阅读_(我的阿爹是带攻略系统的替身)全章节免费在线阅读陆望程映川上官硕
  • 郑雅琴魏旭明免费阅读_郑雅琴魏旭明小说全文阅读笔趣阁
  • 头条热门小说《乔书意贺宴临(乔书意贺宴临)》乔书意贺宴临(全集完整小说大结局)全文阅读笔趣阁
  • 完结好看小说跨年夜,老婆初恋送儿子故意出车祸_沈月柔林瀚枫完结的小说免费阅读推荐
  • 热推《郑雅琴魏旭明》郑雅琴魏旭明~小说全文阅读~完本【已完结】笔趣阁
  • 《你的遗憾与我无关》宋怀川冯洛洛无弹窗小说免费阅读_免费小说大全《你的遗憾与我无关》宋怀川冯洛洛 -

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1