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

vue實(shí)現(xiàn)html轉(zhuǎn)word與word全過程

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

vue中實(shí)現(xiàn)html轉(zhuǎn)word

業(yè)務(wù)描述

用戶通過拖拽所需的組件,在頁面生成類似的word界面,并進(jìn)行實(shí)時(shí)預(yù)覽

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

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

界面展示

  • 界面總體樣式

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

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

實(shí)現(xiàn)方式

將html轉(zhuǎn)成word格式

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

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é)點(diǎn),利用插件轉(zhuǎn)換成word格式

  • 使用htmlDocx轉(zhuǎn)出word格式
/**

? * 使用htmlDocx插件轉(zhuǎn)換html為word結(jié)構(gòu)
? * 生成的word可以正常使用查看,但是后端讀取時(shí)讀取不到word中的內(nèi)容
? * bug可能是插件轉(zhuǎn)換的結(jié)構(gòu)不正確導(dǎo)致

*/
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ù)直接 轉(zhuǎn)換為 文件類型數(shù)據(jù)---直接生成的blob對(duì)象在word文件中打開不是標(biāo)準(zhǔn)的.docx格式
//const blob = new Blob([convertedContent], { type: "application/msword" });//doc文件
//const blob = new Blob([convertedBlob], { type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document" });//docx文件

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

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

淺析一下.docx

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

直接嘗試打開文件:

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

文件頭檢查:

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

解壓檢查

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

使用專業(yè)工具:

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

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

上面使用html-docx-js轉(zhuǎn)換成.docx文檔,后端卻讀取不到內(nèi)容就是因?yàn)閷⑽募孛麨?code>.zip文件后,其中word文件夾下的document.xml的內(nèi)容實(shí)際為空

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

剛剛說的使用html-docx-js轉(zhuǎn)換成.docx文檔的結(jié)構(gòu)如下所示

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

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用Vue3實(shí)現(xiàn)倒計(jì)時(shí)器及倒計(jì)時(shí)任務(wù)的完整代碼

    使用Vue3實(shí)現(xiàn)倒計(jì)時(shí)器及倒計(jì)時(shí)任務(wù)的完整代碼

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

    vue router 組件的高級(jí)應(yīng)用實(shí)例代碼

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

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

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

    vue3中使用scss加上scoped導(dǎo)致樣式失效問題

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

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

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

    前端主流框架vue學(xué)習(xí)筆記第二篇

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

    Vue3使用v-if指令進(jìn)行條件渲染的實(shí)例代碼

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

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

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

    在vue里使用codemirror遇到的問題

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

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

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

最新評(píng)論

灵山县| 平顺县| 哈密市| 南京市| 拉萨市| 阳新县| 怀柔区| 锡林郭勒盟| 邹城市| 大荔县| 旬邑县| 金秀| 江山市| 昆山市| 黄大仙区| 阿尔山市| 马边| 五华县| 尼勒克县| 东乌珠穆沁旗| 莒南县| 株洲市| 滁州市| 武强县| 宝鸡市| 合水县| 贞丰县| 龙海市| 北京市| 永州市| 龙江县| 丰台区| 潜山县| 塘沽区| 革吉县| 蓝山县| 镇雄县| 潮安县| 穆棱市| 渑池县| 秀山|