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

Vue實(shí)現(xiàn)預(yù)覽文件(Word/Excel/PDF)功能的示例代碼

 更新時(shí)間:2023年03月20日 09:40:15   作者:會(huì)說法語的豬  
這篇文章主要為大家詳細(xì)介紹了如何通過Vue實(shí)現(xiàn)預(yù)覽文件(Word/Excel/PDF)的功能,文中的實(shí)現(xiàn)步驟講解詳細(xì),需要的小伙伴可以參考一下

之前也有寫過兩篇預(yù)覽pdf的,但好像還沒寫過預(yù)覽word和excel的,但是這次的預(yù)覽pdf和之前的三個(gè)又不一樣!使用pdfobject預(yù)覽pdf ,Vue使用vue-pdf實(shí)現(xiàn)PDF文件預(yù)覽Vue使用pdf-lib為文件流添加水印并預(yù)覽,這是之前寫的三篇,大家有興趣也可以去看看,總會(huì)有一個(gè)適合的!

這次剛找到三個(gè)兄弟庫,分別是預(yù)覽word、Excel、pdf文檔的,用著很好用,但是word這個(gè)好像是有點(diǎn)兒bug但還不確定,因?yàn)橛械哪芗虞d出來有的加載不出來,還需要驗(yàn)證。其他兩個(gè)應(yīng)該是沒什么問題的,使用起來也很簡單,下面來介紹一下:

安裝 

//docx文檔預(yù)覽組件
npm install @vue-office/docx vue-demi
 
//excel文檔預(yù)覽組件
npm install @vue-office/excel vue-demi
 
//pdf文檔預(yù)覽組件
npm install @vue-office/pdf vue-demi

引入組件、注冊(cè) 

引入進(jìn)來是個(gè)組件,注冊(cè)一下就可以直接使用了 

// docx文檔引入、注冊(cè)
import VueOfficeDocx from '@vue-office/docx'
import '@vue-office/docx/lib/index.css'
 

export default {
  components: { VueOfficeDocx }
}

 
 
// excel文檔引入、注冊(cè)
import VueOfficeExcel from '@vue-office/excel'
import '@vue-office/excel/lib/index.css'
 

export default {
  components: { VueOfficeDocx }
}

 
// pdf文檔引入、注冊(cè)
import VueOfficePdf from '@vue-office/pdf'
 

export default {
  components: { VueOfficeDocx }
}

其實(shí)都是一樣的,很簡單!

使用

使用的時(shí)候,我們直接使用上面注冊(cè)的組件,然后給其src復(fù)制就可以了,src就是我們要預(yù)覽的文件的路徑,文件路徑其實(shí)也有很多種方式,我這里提供三種方式,分別是通過1、window.URL.createObjectURL將文件流Blob對(duì)象轉(zhuǎn)為一個(gè)路徑。2、通過FileReader類來進(jìn)行加載獲取base64編碼等。3、通過調(diào)用Blob對(duì)象的arrayBuffer方法獲取到文件的buffer進(jìn)行賦值。

下面直接上完整代碼了,大家稍微一看都懂啦。我這里測(cè)試的還是從本地選擇的文件,從服務(wù)器獲取文件也是一樣的,設(shè)置responseType為"blob",返回的也就是文件流Blob對(duì)象,操作其實(shí)是一樣的,我示例中給src賦值的方式給出了三種,到時(shí)候選擇一種用就可以了。下面上完整代碼: 

<template>
  <div class="index">
    <div class="select-file">
      <input id="input" type="file">
    </div>
    <div class="file-preview">
      <!-- <VueOfficeDocx v-if="src" style="height: 600px;" :src="src" /> -->
      <!-- <VueOfficeExcel v-if="src" style="height: 600px;" :src="src" /> -->
      <VueOfficePdf v-if="src" style="height: 600px;" :src="src" />
    </div>
  </div>
</template>
<script>
import VueOfficeDocx from '@vue-office/docx'
import '@vue-office/docx/lib/index.css'
 
import VueOfficeExcel from '@vue-office/excel'
import '@vue-office/excel/lib/index.css'
 
import VueOfficePdf from '@vue-office/pdf'
export default {
  data() {
    return {
      src: ''
    }
  },
  components: { VueOfficeDocx, VueOfficeExcel, VueOfficePdf },
  mounted() {
    this.addInputEventListener()
  },
  methods:{
    /**
     * application/msword;charset=utf-8
     * application/pdf;charset=utf-8
     * application/vnd.ms-excel
     */
    addInputEventListener() {
      const input = document.querySelector('#input')
      input.addEventListener('input', e => {
        const fileBlob = e.target.files[0]
 
        // 第一種方式(通過window.URL.createObjectURL將Blob文件流轉(zhuǎn)為一個(gè)路徑)
        this.src = window.URL.createObjectURL(new Blob([fileBlob]))
 
        // 第二種方式(轉(zhuǎn)為base64編碼)
        const fileReader = new FileReader()
        fileReader.readAsDataURL(fileBlob)
        fileReader.onload = e => {
          this.src = e.target.result
        }
        
        // 第三種方式(獲取到buffer)
        fileBlob.arrayBuffer().then(buffer => {
          this.src = buffer
        })
      })
    }
  }
}
</script>
<style scoped>
.index {
  width: 100%;
  height: 100%;
  padding: 15px;
  box-sizing: border-box;
}
.select-file {
  width: 100%;
  height: 35px;
  border-bottom: 1px dashed #ccc;
  margin-bottom: 15px;
}
.file-preview {
  width: 100%;
  height: 650px;
  border: 1px dashed #007acc;
}
</style>

以上就是Vue實(shí)現(xiàn)預(yù)覽文件(Word/Excel/PDF)功能的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于Vue預(yù)覽文件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue中resetFields重置初始值不生效的原因詳解

    vue中resetFields重置初始值不生效的原因詳解

    resetFields 對(duì)整個(gè)表單進(jìn)行重置,將所有字段值重置為空并移除校驗(yàn)結(jié)果,下面這篇文章主要給大家介紹了關(guān)于vue中resetFields重置初始值不生效的原因的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • vue+AI智能機(jī)器人回復(fù)功能實(shí)現(xiàn)

    vue+AI智能機(jī)器人回復(fù)功能實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了vue+AI智能機(jī)器人回復(fù)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • vue3+vite2中使用svg的方法詳解(親測(cè)可用)

    vue3+vite2中使用svg的方法詳解(親測(cè)可用)

    vue2的時(shí)候使用的是字體圖標(biāo),缺點(diǎn)就是比較單一,到了vue3,相信瀏覽器的性能起來,所以這里記錄一下,下面這篇文章主要給大家介紹了關(guān)于vue3+vite2中使用svg的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • 如何給vant的Calendar日歷組件添加備注

    如何給vant的Calendar日歷組件添加備注

    這篇文章主要介紹了如何給vant的Calendar日歷組件添加備注,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue3響應(yīng)式高階用法之shallowRef()的使用

    Vue3響應(yīng)式高階用法之shallowRef()的使用

    在Vue3框架中,shallowRef()為開發(fā)者提供了細(xì)粒度的響應(yīng)式控制能力,特別適用于處理深層嵌套對(duì)象或需要部分響應(yīng)式的場景,本文就來詳細(xì)的介紹一下,感興趣的可以了解一下
    2024-09-09
  • Vue實(shí)現(xiàn)版本檢測(cè)與升級(jí)提示

    Vue實(shí)現(xiàn)版本檢測(cè)與升級(jí)提示

    在現(xiàn)代Web應(yīng)用開發(fā)中,版本檢測(cè)與升級(jí)提示是提升用戶體驗(yàn)的重要環(huán)節(jié),本文將詳細(xì)介紹如何在Vue應(yīng)用中實(shí)現(xiàn)這一功能,有需要的小伙伴可以參考一下
    2025-04-04
  • vue前端sku實(shí)現(xiàn)的方法小結(jié)

    vue前端sku實(shí)現(xiàn)的方法小結(jié)

    這篇文章主要為大家詳細(xì)介紹了vue前端sku實(shí)現(xiàn)的相關(guān)方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考一下
    2024-11-11
  • vue3中傳遞路徑參數(shù)的限制

    vue3中傳遞路徑參數(shù)的限制

    在 Vue 3 里使用路由跳轉(zhuǎn)到用戶頁并傳遞路徑參數(shù)時(shí),存在一些限制和需要注意的方面,下面給大家分享vue3中傳遞路徑參數(shù)有什么限制,感興趣的朋友一起看看吧
    2025-03-03
  • vue使用refs獲取嵌套組件中的值過程

    vue使用refs獲取嵌套組件中的值過程

    這篇文章主要介紹了vue使用refs獲取嵌套組件中的值過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Vue中的v-for列表循環(huán)示例詳解

    Vue中的v-for列表循環(huán)示例詳解

    循環(huán)使用v-for指令,v-for指令需要以site in sites形式的特殊語法,sites是源數(shù)據(jù)數(shù)組并且site是數(shù)組元素迭代的別名,下面這篇文章主要給大家介紹了關(guān)于Vue中v-for列表循環(huán)的相關(guān)資料,需要的朋友可以參考下
    2022-11-11

最新評(píng)論

潼南县| 长宁区| 外汇| 吉林市| 长岭县| 凤阳县| 浪卡子县| 萍乡市| 高雄市| 江都市| 余姚市| 莱阳市| 龙泉市| 六盘水市| 衡水市| 南投县| 罗甸县| 沂水县| 公安县| 永济市| 西昌市| 漳平市| 五常市| 祁门县| 银川市| 孝感市| 河西区| 涟源市| 阿勒泰市| 江华| 许昌市| 沈阳市| 万宁市| 辽宁省| 高邮市| 根河市| 湘潭市| 腾冲县| 武川县| 西青区| 雅江县|