第一步:先下载pdfjs,网址:PDF下载地址,再引入到项目中,我是标签直接引用的
<script src="pdfjs/build/pdf.js"></script>
<script src="pdfjs/build/pdf.worker.js"></script>
第二步:html代码添加两行代码,一个是canvas用来绘图,一个是img用来最后展示转换后的pdf图片
<body>
<img :src="imgUrl" alt="" width="100%" height="auto">
<canvas id="the-canvas" style="display: none"></canvas>
</body>
第三步:js代码块,主要是将paf通过pdfjs插件绘制到canvas,然后再转换为base64格式的图片
//url参数是pdf地址,imgUrl是最后的base64格式图片
showPdf(url) {
let _this = this
let imgArr = []
pdfjsLib.workerSrc = 'pdf.worker.js'
let loadingTask = pdfjsLib.getDocument(url)
loadingTask.promise.then(function(pdf) {
console.log('PDF loaded')
let pageNum = pdf.numPages
// console.log(pageNum)
for (let i=1
pdf.getPage(i).then(function(page) {
console.log('Page loaded')
let scale = 1
let viewport = page.getViewport(scale)
// let canvas = document.getElementById('the-canvas')
let canvas = document.createElement("canvas")
let context = canvas.getContext('2d')
canvas.height = viewport.height
canvas.width = viewport.width
let renderContext = {
canvasContext: context,
viewport: viewport
}
let renderTask = page.render(renderContext)
renderTask.then(function () {
console.log('Page rendered')
let imgUrl = canvas.toDataURL('image/jpeg')
if (imgUrl) {
imgArr[i-1] = imgUrl
}
//pdf全部画完结束后操作
if (imgArr.length==pageNum&&!isEmpty(imgArr)) {
// let canvas2 = document.createElement("canvas")
let canvas2 = document.getElementById('the-canvas')
let context2 = canvas2.getContext('2d')
canvas2.height = viewport.height*pageNum
canvas2.width = viewport.width
let count = 0
for (let j=0
let IMG = new Image()
IMG.src=imgArr[j]
IMG.width = viewport.width
IMG.height = viewport.height
IMG.onload = function () {
context2.drawImage(IMG,0,viewport.height*j)
count++
if (count==pageNum) {
let canvas = document.getElementById('the-canvas')
//赋值给img
_this.imgUrl = canvas.toDataURL('image/jpeg')
}
}
}
}
})
})
}
}, function (reason) {
console.error(reason)
})
function isEmpty(arr) {
for(let i=0
if(!arr[i])
return true
}
return false
}
}
转载于:blog.csdn.net/xxjiushini/…