npm 安装依赖 pdfjs-dist(版本号:2.10.377(目前最新版))
npm install pdfjs-dist --save
注:vue-pdf不兼容IE,pdf.js那个需要下载的,不支持npm依赖包安装,所以选择这个
在vue文件中引入
// 网上很多这里直接引入的,不知道他们怎么对的,反正我要报错,也可能是版本问题
import * as PDFJS from 'pdfjs-dist/legacy/build/pdf'
// workerSrc 要重新赋值下
import workerSrc from 'pdfjs-dist/legacy/build/pdf.worker.entry'
PDFJS.workerSrc = workerSrc
获取后端文件流,并预览
dowloadPDFApi().then(res => {
const blob = new Blob([res.data], { application/pdf })
// 因为pdf的getDocument方法接受的src,只能是string,uint8Array,还有URL类型,
// 所以这里对这个blob流做下处理
let reader = new FileReader()
// 有些地方这里用的readAsDataurl,这个方法转出来的会不兼容IE
reader.readAsArrayBuffer(blob)
reader.onloadend = (e) => {
//这个数据兼容IE11
const rawArray = new Uint8Array(e.target.result)
this.pdfData = PDFJS.getDocument(rawArray)
this.pdfData.promise.then((pdf) => {
// 这里方法里都通用可以自行百度即可
pdf.getPage(this.currentPage).then(page => {
// 这里不要直接传个scale,看网上有些人是直接传的,这里直接传了是个坑,视口的宽高全是NaN
let viewport = page.getViewport({scale: 1})
...
})
})
}
})