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

blob文件流前端顯示pdf三種方法

 更新時間:2024年04月02日 08:42:54   作者:兔老大的胡蘿卜  
這篇文章主要給大家介紹了關(guān)于blob文件流前端顯示pdf的三種方法,困擾我一個晚上的問題,終于解決了,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下

首先請求需要修改

responseType: ‘blob’, 需要修改

請求頭
{
        responseType: 'blob',
        url: url,
        method: 'get',
    }

三種方法:

1.直接處理,在新頁面打開

const blob = new Blob([data],{
type:'application/pdf'
})
let url = window.URL.createObjectURL(blob)
window.open(url,'_blank')
問題在于父頁面關(guān)閉或者刷新后,文件頁面獲取不到文件流,刷新顯示空白頁。

2.在新頁面用iframe接

<iframe :src='xxxxxx'>
問題在于點(diǎn)擊iframe中文件之后無法在iframe監(jiān)聽事件,ctrl+p 顯示空白

3.使用pdf.js

到 mozilla.github.io/pdf.js/gett… 頁面中找到下載位置,下載 PDF.js
在viewer.js 修改
注釋下列代碼   不然 可能會出現(xiàn)跨域錯誤,無法正常預(yù)覽文件
if (origin !== viewerOrigin && protocol !== "blob:") {
  throw new Error("file origin does not match viewer's");
}

隨后在頁面展示
let path = window.URL.createObjectURL(blob)
const fileUrl = '/pdfjs2/web/viewer.html'
// 生產(chǎn)環(huán)境下
if (process.env.NODE_ENV === 'production') {
  this.pdfurl = fileUrl + '?file=' + encodeURIComponent(path)
} else {
// 開發(fā)環(huán)境
  this.pdfurl = fileUrl + '?file=' + encodeURIComponent(path)
}

修改清晰度    --注意清晰度越高,打印預(yù)覽時 谷歌內(nèi)核滾動條越卡
this._printResolution = 450//printResolution || 150
新版本的pdf.js viewer.js被改為mjs,上線時nginx需要修改
另外還有個bug 在一個頁面打印預(yù)覽時,同源的其他頁面無法點(diǎn)擊

附:Blob流在線預(yù)覽PDF文件、圖片

這個要注意格式,要加上responseType: 'arraybuffer'

import axios from 'axios'
const fileTypeList = ['application/pdf', 'image/png', 'image/gif', 'image/jpeg', 'txt/plain']
invoicePreview () {
      axios({
        method: 'get',
        url: '/acc_test/index/test_pdf',
        baseURL: process.env.HOSTURL,
        responseType: 'arraybuffer'
      }).then(res => {
        let fileType = res.headers['content-type']
        const binaryData = []

        if (fileType && fileTypeList.includes(fileType)) {
          binaryData.push(res.data)
          let URL = window.URL.createObjectURL(new Blob(binaryData, { type: fileType, charset: 'utf-8' }))
          window.open(URL)
        } else {
          this.$Message.error('不支持此文件預(yù)覽')
        }
      })
    }

總結(jié) 

到此這篇關(guān)于blob文件流前端顯示pdf三種方法的文章就介紹到這了,更多相關(guān)blob文件流顯示pdf內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談微信小程序列表埋點(diǎn)曝光指南

    淺談微信小程序列表埋點(diǎn)曝光指南

    這篇文章主要介紹了微信小程序列表埋點(diǎn)曝光指南,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Javascript實(shí)現(xiàn)Vue跨組件通信的方法詳解

    Javascript實(shí)現(xiàn)Vue跨組件通信的方法詳解

    這篇文章主要為大家詳細(xì)介紹了Vue的跨組件通信,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • js實(shí)現(xiàn)金山打字通小游戲

    js實(shí)現(xiàn)金山打字通小游戲

    這篇文章為大家詳細(xì)主要介紹了js實(shí)現(xiàn)金山打字通小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • uniapp中常用的事件處理方法詳解

    uniapp中常用的事件處理方法詳解

    在UniApp中事件處理非常重要,通過事件處理可以實(shí)現(xiàn)用戶與應(yīng)用程序之間的交互,這篇文章主要給大家介紹了關(guān)于uniapp中常用的事件處理方法的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • JavaScript組合拼接字符串的效率對比測試

    JavaScript組合拼接字符串的效率對比測試

    這篇文章主要介紹了JavaScript組合拼接字符串的效率對比測試,本文測試了IE6、Firefox、Mozilla、Netscape、Opera等瀏覽器,需要的朋友可以參考下
    2014-11-11
  • js用類封裝pop彈窗組件

    js用類封裝pop彈窗組件

    這篇文章主要為大家詳細(xì)介紹了js用類封裝pop彈窗組件的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • js 禁止選擇功能實(shí)現(xiàn)代碼(兼容IE/Firefox)

    js 禁止選擇功能實(shí)現(xiàn)代碼(兼容IE/Firefox)

    有時候出于某種需要,不希望用戶可以選擇某個區(qū)域,進(jìn)行下面的操作,這里給出簡單的代碼。
    2010-04-04
  • js學(xué)習(xí)總結(jié)之dom2級事件基礎(chǔ)知識詳解

    js學(xué)習(xí)總結(jié)之dom2級事件基礎(chǔ)知識詳解

    這篇文章主要為大家詳細(xì)介紹了js學(xué)習(xí)總結(jié)之dom2級事件基礎(chǔ)知識,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 用js提交表單解決一個頁面有多個提交按鈕的問題

    用js提交表單解決一個頁面有多個提交按鈕的問題

    這篇文章主要介紹了用js提交表單解決一個頁面有多個提交按鈕的問題,主要是判斷是否為提交文本,然后再執(zhí)行相應(yīng)的動作,需要的朋友可以參考下
    2014-09-09
  • lhgcalendar時間插件限制只能選擇三個月的實(shí)現(xiàn)方法

    lhgcalendar時間插件限制只能選擇三個月的實(shí)現(xiàn)方法

    下面小編就為大家?guī)硪黄猯hgcalendar時間插件限制只能選擇三個月的實(shí)現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07

最新評論