npm 安裝依賴 pdfjs-dist(版本號(hào):2.10.377(目前最新版))
npm install pdfjs-dist --save
注:vue-pdf不兼容IE澎现,pdf.js那個(gè)需要下載的,不支持npm依賴包安裝每辟,所以選擇這個(gè)
在vue文件中引入
// 網(wǎng)上很多這里直接引入的剑辫,不知道他們?cè)趺磳?duì)的,反正我要報(bào)錯(cuò)渠欺,也可能是版本問(wèn)題
import * as PDFJS from 'pdfjs-dist/legacy/build/pdf'
// workerSrc 要重新賦值下
import workerSrc from 'pdfjs-dist/legacy/build/pdf.worker.entry'
PDFJS.workerSrc = workerSrc
獲取后端文件流妹蔽,并預(yù)覽
dowloadPDFApi().then(res => {
const blob = new Blob([res.data], { application/pdf })
// 因?yàn)閜df的getDocument方法接受的src,只能是string,uint8Array挠将,還有URL類型乳丰,
// 所以這里對(duì)這個(gè)blob流做下處理
let reader = new FileReader()
// 有些地方這里用的readAsDataurl,這個(gè)方法轉(zhuǎn)出來(lái)的會(huì)不兼容IE
reader.readAsArrayBuffer(blob)
reader.onloadend = (e) => {
//這個(gè)數(shù)據(jù)兼容IE11
const rawArray = new Uint8Array(e.target.result)
this.pdfData = PDFJS.getDocument(rawArray)
this.pdfData.promise.then((pdf) => {
// 這里方法里都通用可以自行百度即可
pdf.getPage(this.currentPage).then(page => {
// 這里不要直接傳個(gè)scale,看網(wǎng)上有些人是直接傳的,這里直接傳了是個(gè)坑断箫,視口的寬高全是NaN
let viewport = page.getViewport({scale: 1})
...
})
})
}
})