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

vue如何使用pdf.js實現(xiàn)在線查看pdf文件功能

 更新時間:2024年03月26日 11:02:23   作者:碼不停T  
PDF.js是一個開源的JavaScript庫,用于在網(wǎng)頁上渲染和顯示PDF文件,在Vue中使用PDF.js來預(yù)覽PDF文件是很常見的需求,這篇文章主要給大家介紹了關(guān)于vue如何使用pdf.js實現(xiàn)在線查看pdf文件功能的相關(guān)資料,需要的朋友可以參考下

需求:

有一個列表頁,用戶點擊查看,彈層展示后臺接口返回的pdf內(nèi)容(不是文件、地址之類的,亂碼的pdf銘文(二進(jìn)制文件流))

1、pdf.js安裝

npm install --save vue-pdf

2、正文代碼

<template>
    <div>
		<el-table :data="dataList">
	        <el-table-column prop="fieldName" width="120" label="操作">
	          <template slot-scope="scope">
	            <span @click="look(scope.row)">查看</span>
	          </template>
	        </el-table-column>
       </el-table>
	   <el-dialog title="預(yù)覽" :visible.sync="dialogVisible" :before-close="closePdf">
      	 <pdf v-for="i in numPages" :key="i" :src="pdfSrc" :page="i" />
       </el-dialog>
	</div>
<template>
<script>
	import pdf from 'vue-pdf'
	export default {
	  components: {
	    pdf
	  },
	  data() {
   		 return {
  		 	  dialogVisible: false,
		      numPages: 1,
		      pdfSrc:"",
		      close:false,
   		 }
   	  },
   	  methods: {
		// 查看預(yù)覽
	    look(row) {
	      const that = this;
	      that.pdfSrc = "";
		  // 接口文件地址(接口入?yún)⑵闯鰜淼穆窂剑?
	      const url = `${Host}xxxxxx/xxxx/xxx?fileId=${row.fileId}&amp;fileName=${row.fileName}.pdf`;
		  // 如果調(diào)用接口(接口的responseType一定要是blob,默認(rèn)json,不然解析出來的pdf是空白的)后拿的返回的值(亂碼的pdf銘文(二進(jìn)制文件流))則需要轉(zhuǎn)一下
		  // const url = window.URL.createObjectURL(new Blob([res]), { // res為接口返回值
			// type: "application/msword"
		  // });
	      that.pdfSrc = pdf.createLoadingTask(url)
	      that.pdfSrc.promise.then(pdf => {
	        that.dialogVisible = true;
	        that.numPages = pdf.numPages
	        //保證pdf加載成功,否則不能關(guān)閉彈層
	        setTimeout(() => {
	          that.close = true;
	        }, 2000);
	      })
	      .catch(error => {
	        that.$message.error("無效的PDF文件!");
	      })
	    },
	    //此方法解決第一次查看pdf文字沒有加載完成影響后續(xù)查看
	    closePdf(done){
	      if(this.close) {
	        this.numPages = 1;//必須重置,多次查看會出現(xiàn)頭部內(nèi)容缺失
	        this.close = false;
	        done();
	      } else {
	        this.$message.warning("PDF文件加載中");
	      }
	    }
	  }
	}
</script>

遇到的問題:

1、多次查看后頭部內(nèi)容不顯示。 設(shè)置numPages = 1;

2、上一條pdf查看沒有加載完成,下一條pdf查看pdfSrc清空了還是無法正常加載。 延遲關(guān)閉彈層(這個方法有點暴力,希望能找到好的解決方法);

3、頭部會有點多余內(nèi)容溢出,內(nèi)容沒啥,就是感覺有類似border的東西。 頭部其他內(nèi)容設(shè)置樣式蓋住(具體css略)。

在后續(xù)項目中又實現(xiàn)了該功能,沒有遇到以上問題,盲猜是因為pdf dialog標(biāo)簽上加了v-if,光設(shè)置visible.sync只會控制元素的顯示隱藏,不會重新渲染。

總結(jié):只要是dialog最好加上v-if,會避免很多問題。

拓展:

如果后端返回的是html格式,前端調(diào)用的接口responseType就不要用blob了,直接將返回結(jié)果放在v-html里面。例:

<div v-html="responseData"/>

總結(jié) 

到此這篇關(guān)于vue如何使用pdf.js實現(xiàn)在線查看pdf文件功能的文章就介紹到這了,更多相關(guān)vue在線查看pdf文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue常用的修飾符及應(yīng)用場景解讀

    Vue常用的修飾符及應(yīng)用場景解讀

    這篇文章主要介紹了Vue常用的修飾符及應(yīng)用場景解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue3+el-select實現(xiàn)觸底加載更多功能(ts版)

    vue3+el-select實現(xiàn)觸底加載更多功能(ts版)

    這篇文章主要給大家介紹了基于vue3和el-select實現(xiàn)觸底加載更多功能,文中有詳細(xì)的代碼示例,感興趣的同學(xué)可以借鑒參考下
    2023-07-07
  • Vue.use源碼分析

    Vue.use源碼分析

    這篇文章主要為大家詳細(xì)介紹了Vue.use源碼,Vue.use方法的引入,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • VUE3函數(shù)的聲明和使用舉例

    VUE3函數(shù)的聲明和使用舉例

    這篇文章主要給大家介紹了關(guān)于VUE3函數(shù)的聲明和使用的相關(guān)資料, Vue3是一種流行的JavaScript框架,它允許開發(fā)人員構(gòu)建現(xiàn)代化的Web應(yīng)用程序,需要的朋友可以參考下
    2023-07-07
  • vue3子組件數(shù)據(jù)無法更新問題

    vue3子組件數(shù)據(jù)無法更新問題

    這篇文章主要介紹了vue3子組件數(shù)據(jù)無法更新問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue打包chunk-vendors.js文件過大導(dǎo)致頁面加載緩慢的解決

    vue打包chunk-vendors.js文件過大導(dǎo)致頁面加載緩慢的解決

    這篇文章主要介紹了vue打包chunk-vendors.js文件過大導(dǎo)致頁面加載緩慢的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 基于vue如何發(fā)布一個npm包的方法步驟

    基于vue如何發(fā)布一個npm包的方法步驟

    這篇文章主要介紹了基于vue如何發(fā)布一個npm包的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • vue里面v-bind和Props 利用props綁定動態(tài)數(shù)據(jù)的方法

    vue里面v-bind和Props 利用props綁定動態(tài)數(shù)據(jù)的方法

    今天小編就為大家分享一篇vue里面v-bind和Props 利用props綁定動態(tài)數(shù)據(jù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • 從入門到精通淺析Vue3內(nèi)存泄漏排查與性能優(yōu)化的工具指南

    從入門到精通淺析Vue3內(nèi)存泄漏排查與性能優(yōu)化的工具指南

    在單頁面應(yīng)用(SPA)無縫交互的背后,潛藏著一個常常被忽視的惡魔-內(nèi)存泄漏,本文將帶你深入了解Vue 3 的內(nèi)存世界,從響應(yīng)式系統(tǒng)的底層機制出發(fā),剖析泄漏根源,希望對大家有所幫助
    2025-12-12
  • element ui中表單el-form的label如何設(shè)置寬度

    element ui中表單el-form的label如何設(shè)置寬度

    這篇文章主要介紹了element ui中表單el-form的label如何設(shè)置寬度,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10

最新評論

福贡县| 岱山县| 晋州市| 改则县| 阿城市| 沧源| 北票市| 宝山区| 赤壁市| 道真| 高陵县| 阳原县| 和平区| 星子县| 新昌县| 太保市| 越西县| 万盛区| 闵行区| 循化| 铜山县| 巢湖市| 民权县| 舒城县| 房山区| 麦盖提县| 怀来县| 永定县| 新河县| 武功县| 二连浩特市| 尚义县| 汶上县| 行唐县| 新河县| 大庆市| 沁阳市| 双峰县| 霸州市| 老河口市| 临海市|