基於VUE利用pdf.js實現文件流形式的pdf顯示


首先推薦大家看一下這個demo vue-pdf.js-demo,這里面包含固定本地地址,遠程pdf地址,通過打開文件的方式打開pdf

這兒我們着重介紹一下通過文件流的形式打開pdf。(所謂文件流,就是通過ajax請求,返回的數據是文件流的形式)

1. 首先通過下載pdf.js的相關文件,當然我推薦直接拷貝 vue-pdf.js-demo里面的文件,然后放到static目錄里面

2. 第二步就是直接使用了

在組件中合適的地方放入 iframe

<iframe class="prism-player" :src="pdfUrl" width="100%" height="100%"></iframe>

3. 然后就是獲取pdfUrl(這兒也推薦兩種方式)

第一種,直接調用文件流的請求地址

// 這兒的url, 就是通過 axios 進行請求的地址,只不過換成了從導航url進行請求的方式
let url = process.env.BASE_API + '/coursePartDetail/getFileStreamByCoursePartDetailId?CoursePartDetailId=' + this.sectionMsg.id
this.pdfUrl = `/static/pdf/web/viewer.html?file=${encodeURIComponent(url)}`

第二種,通過 axios 請求獲取到的文件流進行處理(當然如果有加密相關的也可以通過這種方式,將獲取到的文件進行解密,這種方式就要自己去研究了)

// 這兒的 getPdf() 是獲取文件流的 axios 封裝方法
getPdf().then( res => {
    // 這兒的res是返回的文件流
    this.pdfUrl  = this.getObjectURL(res)
})

// 將返回的流數據轉換為url
getObjectURL(file) {
      let url = null;
      if (window.createObjectURL != undefined) { // basic
          url = window.createObjectURL(file);
      } else if (window.webkitURL != undefined) { // webkit or chrome
          try {
            url = window.webkitURL.createObjectURL(file);            
          } catch (error) {
            
          }
      } else if (window.URL != undefined) { // mozilla(firefox)
        try {
          url = window.URL.createObjectURL(file);
        } catch (error) {
          
        }
      }
      return url;
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM