欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

需求:

有一個(gè)列表頁(yè),用戶(hù)點(diǎn)擊查看,彈層展示后臺(tái)接口返回的pdf內(nèi)容(不是文件、地址之類(lè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)⑵闯鰜?lái)的路徑)
	      const url = `${Host}xxxxxx/xxxx/xxx?fileId=${row.fileId}&amp;fileName=${row.fileName}.pdf`;
		  // 如果調(diào)用接口(接口的responseType一定要是blob,默認(rèn)json,不然解析出來(lái)的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("無(wú)效的PDF文件!");
	      })
	    },
	    //此方法解決第一次查看pdf文字沒(méi)有加載完成影響后續(xù)查看
	    closePdf(done){
	      if(this.close) {
	        this.numPages = 1;//必須重置,多次查看會(huì)出現(xiàn)頭部?jī)?nèi)容缺失
	        this.close = false;
	        done();
	      } else {
	        this.$message.warning("PDF文件加載中");
	      }
	    }
	  }
	}
</script>

遇到的問(wèn)題:

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

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

3、頭部會(huì)有點(diǎn)多余內(nèi)容溢出,內(nèi)容沒(méi)啥,就是感覺(jué)有類(lèi)似border的東西。 頭部其他內(nèi)容設(shè)置樣式蓋?。ň唧wcss略)。

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

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

拓展:

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

<div v-html="responseData"/>

總結(jié) 

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

相關(guān)文章

  • 如何使用VUE+faceApi.js實(shí)現(xiàn)攝像頭拍攝人臉識(shí)別

    如何使用VUE+faceApi.js實(shí)現(xiàn)攝像頭拍攝人臉識(shí)別

    Face-api.js是一個(gè)JavaScript API,是基于tensorflow.js核心API 的人臉檢測(cè)和人臉識(shí)別的瀏覽器實(shí)現(xiàn),這篇文章主要給大家介紹了關(guān)于如何使用VUE+faceApi.js實(shí)現(xiàn)攝像頭拍攝人臉識(shí)別的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • Vue簡(jiǎn)介、引入、命令式與聲明式編程詳解

    Vue簡(jiǎn)介、引入、命令式與聲明式編程詳解

    原生開(kāi)發(fā)和Vue開(kāi)發(fā)的模式和特點(diǎn),我們會(huì)發(fā)現(xiàn)是完全不同的,這里其實(shí)涉及到兩種不同的編程范式:命令式編程和聲明式編程,下面這篇文章主要給大家介紹了關(guān)于Vue簡(jiǎn)介、引入、命令式與聲明式編程的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • Vue+axios使用FormData方式向后端發(fā)送數(shù)據(jù)

    Vue+axios使用FormData方式向后端發(fā)送數(shù)據(jù)

    在前后端分離的項(xiàng)目中經(jīng)常使用到Vue+axios通過(guò)FormData的方式向后端發(fā)送表單數(shù)據(jù),下面就來(lái)介紹一下如何實(shí)現(xiàn),感興趣的可以了解一下
    2023-09-09
  • Vue使用Element-UI生成并展示表頭序號(hào)的方法

    Vue使用Element-UI生成并展示表頭序號(hào)的方法

    序號(hào)算是在展示數(shù)據(jù)的時(shí)候,一種很普遍的屬性了,我們可以自己寫(xiě)生成序號(hào)的規(guī)則,也可以借助第三方,這篇文章主要介紹了Vue使用Element-UI生成并展示表頭序號(hào)的方法,需要的朋友可以參考下
    2023-01-01
  • Vue如何解決兄弟組件之間傳值問(wèn)題

    Vue如何解決兄弟組件之間傳值問(wèn)題

    這篇文章主要介紹了Vue如何解決兄弟組件之間傳值問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue?+?qiankun?項(xiàng)目搭建過(guò)程

    vue?+?qiankun?項(xiàng)目搭建過(guò)程

    這篇文章主要介紹了vue?+?qiankun?項(xiàng)目搭建,首先是通過(guò)cli3構(gòu)建vue2項(xiàng)目,通過(guò)qiankun改造主應(yīng)用,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • vue根據(jù)條件不同顯示不同按鈕的操作

    vue根據(jù)條件不同顯示不同按鈕的操作

    這篇文章主要介紹了vue根據(jù)條件不同顯示不同按鈕的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • vue開(kāi)發(fā)心得和技巧分享

    vue開(kāi)發(fā)心得和技巧分享

    這篇文章主要為大家分享了vue開(kāi)發(fā)心得和技巧,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • element中Steps步驟條和Tabs標(biāo)簽頁(yè)關(guān)聯(lián)的解決

    element中Steps步驟條和Tabs標(biāo)簽頁(yè)關(guān)聯(lián)的解決

    這篇文章主要介紹了element中Steps步驟條和Tabs標(biāo)簽頁(yè)關(guān)聯(lián)的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Vue+vite創(chuàng)建項(xiàng)目關(guān)于vite.config.js文件的配置方法

    Vue+vite創(chuàng)建項(xiàng)目關(guān)于vite.config.js文件的配置方法

    Vue項(xiàng)目創(chuàng)建時(shí),我們見(jiàn)過(guò)vue-cli 創(chuàng)建項(xiàng)目和webpack 創(chuàng)建項(xiàng)目等方式,這篇文章主要介紹了Vue+vite創(chuàng)建項(xiàng)目關(guān)于vite.config.js文件的配置方法,需要的朋友可以參考下
    2023-06-06

最新評(píng)論