最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue實現(xiàn)html轉word與word全過程

 更新時間:2026年01月22日 15:00:05   作者:四木Zhang  
本文介紹了如何在Vue中實現(xiàn)HTML轉Word功能,通過拖拽組件生成類似Word的界面,并實時預覽,主要使用了htmlDocx和htmlToDocx插件將HTML轉換為.docx格式,同時,還討論了檢查.docx文件是否損壞的方法

vue中實現(xiàn)html轉word

業(yè)務描述

用戶通過拖拽所需的組件,在頁面生成類似的word界面,并進行實時預覽

將該界面的樣式生成.docx文件上傳至后臺(不觸發(fā)用戶的下載上傳行為)

本次只記錄由html生成.docx的文檔部分,拖拽生成界面部分后續(xù)有時間會補充

界面展示

  • 界面總體樣式

  • 這是在界面展示的word樣式

  • 這是生成的.docx文件的模版樣式

實現(xiàn)方式

將html轉成word格式

這一步由插件幫助我們實現(xiàn),插件有htmlDocx,htmlToDocx,或許還有其他,這里就記錄這兩個

1.下載插件

npm install html-docx-js -S  
npm install html-to-docx

2.在vue界面中引入使用

import htmlToDocx from 'html-to-docx'
import htmlDocx from 'html-docx-js/dist/html-docx';

3.獲取dom節(jié)點,利用插件轉換成word格式

  • 使用htmlDocx轉出word格式
/**

? * 使用htmlDocx插件轉換html為word結構
? * 生成的word可以正常使用查看,但是后端讀取時讀取不到word中的內容
? * bug可能是插件轉換的結構不正確導致

*/
const dom = document.getElementById('wordContent');
const content = dom.innerHTML;
const convertedBlob = htmlDocx.asBlob(`
     <!DOCTYPE html>
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      </head>

       <body>
          ${content}
       </body>
       </html>
 `);
//Html類型數(shù)據(jù)直接 轉換為 文件類型數(shù)據(jù)---直接生成的blob對象在word文件中打開不是標準的.docx格式
//const blob = new Blob([convertedContent], { type: "application/msword" });//doc文件
//const blob = new Blob([convertedBlob], { type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document" });//docx文件

 // 將bolb對象轉為file,轉成流后就可以直接上傳到后臺
 let file = new File([convertedBlob], this.templateName + '.docx', {
 type: 'application/json',
    lastModified: Date.now()
 });
 const formData = new FormData();
 formData.append("file", file);
//調用上傳接口保存文件
.....

  • 使用htmlToDocx轉出word格式
const content = document.getElementById('wordContent').outerHTML;
htmlToDocx(content).then((data) => {
     // FileSaver.saveAs(data, 'output.docx');//下載文件
    //data就是轉出的文件
    file = new File([data], this.templateName + '.docx', {
        type: 'application/json',
        lastModified: Date.now()
    });
 })

淺析一下.docx

檢查一個 .docx 文件是否有問題,可以嘗試以下幾個方法:

直接嘗試打開文件:

  • 使用Microsoft Word嘗試打開文件。如果文件能正常打開并且內容顯示無誤,通常說明文件是正常的。
  • 如果Word報告文件損壞或無法打開,那文件可能存在問題。

文件頭檢查:

  • 使用文本編輯器(如Notepad++)打開 .docx 文件(注意不要直接用記事本打開,因為這會破壞文件)。
  • 一個正常的 .docx 文件其實是一個ZIP壓縮包,因此你應該能看到以PK開頭的一系列字符。
  • 如果看不到這些字符,文件可能不是有效的 .docx 文件或已損壞。

解壓檢查

  • .docx 文件重命名,將擴展名改為 .zip,然后嘗試解壓。
  • 如果能成功解壓,查看解壓后的文件結構是否包含word/document.xml等核心文件。
  • 如果不能解壓或解壓后缺少關鍵組件,文件可能損壞。

使用專業(yè)工具:

  • 利用專門的文件修復工具,市面上有一些工具聲稱能修復損壞的 .docx 文件,盡管效果可能因具體情況而異。
  • …等等,還有好多就不一一列舉了

主要檢查方式就是將文件重命名為.zip文件,檢查其中的word/document.xml文件

上面使用html-docx-js轉換成.docx文檔,后端卻讀取不到內容就是因為將文件重命名為.zip文件后,其中word文件夾下的document.xml的內容實際為空

正常的word文件,打開word文件夾與document.xml看到的內容如下

剛剛說的使用html-docx-js轉換成.docx文檔的結構如下所示

兩個word其中的展示內容是一樣的,后綴名是.docx時,兩個文件都是可以正常看到內容的;但是一個可以被后端讀取到,一個后端讀取為空,在這里可以看到,其原因就是我們使用html-docx-js轉換的word文件中的document.xml文件沒有內容

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 使用Vue3實現(xiàn)倒計時器及倒計時任務的完整代碼

    使用Vue3實現(xiàn)倒計時器及倒計時任務的完整代碼

    文章介紹了如何使用Vue3和Element-plus開發(fā)一個倒計時器和倒計時任務管理界面,倒計時器具備手動設置、開始、暫停和重啟功能,文章還提供了倒計時器的完整代碼,包括HTML、JavaScript和CSS部分,感興趣的朋友一起看看吧
    2024-11-11
  • vue router 組件的高級應用實例代碼

    vue router 組件的高級應用實例代碼

    這篇文章主要介紹了vue-router 組件的高級應用,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04
  • Vue2+ElementUI表單、Form組件的封裝過程

    Vue2+ElementUI表單、Form組件的封裝過程

    在 Vue2 項目中,ElementUI 的 el-form 組件是常用的表單組件,它提供了豐富的功能和樣式,可以滿足各種需求,本文給大家介紹Vue2+ElementUI表單、Form組件的封裝過程,感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • vue3中使用scss加上scoped導致樣式失效問題

    vue3中使用scss加上scoped導致樣式失效問題

    這篇文章主要介紹了vue3中使用scss加上scoped導致樣式失效問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue打包后顯示空白正確處理方法

    vue打包后顯示空白正確處理方法

    很多朋友遇到這樣的問題當vue打包后顯示空白問題,遇到這樣的問題怎么處理呢?下面腳本之家小編給大家分享下vue打包后顯示空白正確處理方法,感興趣的朋友一起看看吧
    2017-11-11
  • 前端主流框架vue學習筆記第二篇

    前端主流框架vue學習筆記第二篇

    一步一步學Vue,這篇文章為大家分享了第二篇前端主流框架vue學習筆記,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Vue3使用v-if指令進行條件渲染的實例代碼

    Vue3使用v-if指令進行條件渲染的實例代碼

    條件渲染是根據(jù)條件的真假來有條件地渲染元素,在Vue.js 3.x中,常見的條件渲染包括使用v-if指令和v-show指令,本文講解使用v-if指令進行條件渲染,需要的朋友可以參考下
    2024-03-03
  • vue組件props不同數(shù)據(jù)類型傳參的默認值問題

    vue組件props不同數(shù)據(jù)類型傳參的默認值問題

    這篇文章主要介紹了vue組件props不同數(shù)據(jù)類型傳參的默認值問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 在vue里使用codemirror遇到的問題

    在vue里使用codemirror遇到的問題

    這篇文章主要介紹了在vue里使用codemirror遇到問題,本文給大家記錄下來了,需要的朋友可以參考下
    2018-11-11
  • vue利用better-scroll實現(xiàn)輪播圖與頁面滾動詳解

    vue利用better-scroll實現(xiàn)輪播圖與頁面滾動詳解

    在我們日常的項目開發(fā)中,處理滾動和輪播圖是再常見不過的需求了,下面這篇文章主要給大家介紹了關于vue利用better-scroll實現(xiàn)輪播圖與頁面滾動的相關資料,文中給出了詳細的示例代碼供大家參考學習,需要的朋友們下面來一起看看吧。
    2017-10-10

最新評論

扎赉特旗| 阜新市| 临高县| 新田县| 芦山县| 杭锦后旗| 册亨县| 游戏| 辽中县| 西青区| 手游| 大石桥市| 颍上县| 平度市| 铜山县| 乡宁县| 正蓝旗| 蒙自县| 南召县| 平邑县| 绵竹市| 新郑市| 棋牌| 安龙县| 滨州市| 深州市| 邮箱| 潮安县| 卓资县| 织金县| 怀仁县| 呈贡县| 乌鲁木齐市| 通城县| 游戏| 内黄县| 泽库县| 健康| 乐陵市| 江安县| 乌鲁木齐县|