亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

前端實現word文檔預覽和內容提取的詳細過程

 更新時間:2024年05月25日 11:52:37   作者:crazyXB  
在前端直接讀取并原樣展示Word文檔是一個相對復雜的任務,因為Word文檔的格式(如.doc或.docx)與Web技術棧使用的格式(HTML、CSS)不兼容,下面這篇文章主要給大家介紹了關于前端實現word文檔預覽和內容提取的詳細過程,需要的朋友可以參考下

需求

上一篇寫了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: 渲染的區(qū)域

3.styleContainer: 通常用于指定一個HTML元素,該元素將用于包含和管理渲染文檔所需的樣式信息,包括字體、顏色、布局等。

4.options:{} 具體參數看文檔

// JavaScript
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)
}

提取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>

總結 

到此這篇關于前端實現word文檔預覽和內容提取的文章就介紹到這了,更多相關前端word文檔預覽和內容提取內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 原生js實現下拉菜單

    原生js實現下拉菜單

    這篇文章主要為大家詳細介紹了原生js實現下拉菜單,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • js寫一個字符串轉成駝峰的實例

    js寫一個字符串轉成駝峰的實例

    寫一個字符串轉成駝峰的方法,使用js代碼實現,具體如下,感興趣的朋友可以了解下哈
    2013-06-06
  • 利用jsonp與代理服務器方案解決跨域問題

    利用jsonp與代理服務器方案解決跨域問題

    這篇文章主要給大家介紹了關于利用jsonp與代理服務器方案解決跨域問題的相關資料,文中通過示例代碼給大家介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-09-09
  • JavaScript常見JSON操作實例分析

    JavaScript常見JSON操作實例分析

    這篇文章主要介紹了JavaScript常見JSON操作,簡單描述了json的概念、常見json類型,并結合實例形式分析了json的序列化、轉換、格式化、解析等相關操作技巧,需要的朋友可以參考下
    2018-08-08
  • jquery結合CSS使用validate實現漂亮的驗證

    jquery結合CSS使用validate實現漂亮的驗證

    這篇文章主要介紹了jquery結合CSS使用validate實現漂亮的驗證,需要的朋友可以參考下
    2015-01-01
  • js鼠標移動時禁止選中文字

    js鼠標移動時禁止選中文字

    本文主要介紹了js鼠標移動時禁止選中文字的方法,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • JavaScript實現審核流程狀態(tài)的動態(tài)顯示進度條

    JavaScript實現審核流程狀態(tài)的動態(tài)顯示進度條

    對于有很多流程的東西,我們希望能夠根據不同的階段,用流程條對應地進行顯示,非常直觀,給用戶帶來極好的用戶體驗,下面小編給大家分享JavaScript實現審核流程狀態(tài)的動態(tài)顯示進度條功能,需要的的朋友參考下
    2017-03-03
  • 一文帶你快速理解JavaScript中call()函數的使用

    一文帶你快速理解JavaScript中call()函數的使用

    這篇文章主要為大家詳細介紹了JavaScript中call()函數的使用的相關知識,文中的示例代碼講解詳細,具有一定的學習價值,需要的可以參考一下
    2023-03-03
  • js和jQuery以及easyui實現對下拉框的指定賦值方法

    js和jQuery以及easyui實現對下拉框的指定賦值方法

    下面小編就為大家分享一篇js和jQuery以及easyui實現對下拉框的指定賦值方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • JavaScript中windows.open()、windows.close()方法詳解

    JavaScript中windows.open()、windows.close()方法詳解

    這篇文章主要介紹了JavaScript中windows.open()、windows.close()方法詳解 的相關資料,需要的朋友可以參考下
    2016-07-07

最新評論