赞
踩

npm i vue-pdf
<pdf ref="pdfRef" style="margin: 0 auto" :src="pdfData" :page="currentPage" @num-pages="pageTotalNum = $event" ></pdf> import pdf from "vue-pdf"; var loadingTask = pdf.createLoadingTask( "xxx.pdf" ); export default { name: "pdfView", components: { pdf, } }
/** * @description 加载PDF获取canvas图片 */ loadPdf() { this.loading = true; this.pdfData.promise.then((pdf) => { this.pageTotalNum = pdf.numPages; let pagePromise = []; for (let index = 1; index <= this.pageTotalNum; index++) { const element = pdf.getPage(index); pagePromise.push(element); } this.getImageList(pagePromise); }); }, /** * @description 通过page 渲染canvas获取base64图片 */ getImageList(pagePromise) { let result = []; Promise.all(pagePromise) .then((res) => { for (let index = 0; index < res.length; index++) { // 当前页 const page = res[index]; // 绘制canvas const canvas = document.createElement("canvas"); const context = canvas.getContext("2d"); const viewport = page.getViewport({ scale: 1 }); canvas.width = viewport.width; canvas.height = viewport.height; const renderContext = { canvasContext: context, viewport: viewport, }; result.push(page.render(renderContext).promise); // canvas转图片 Promise.all(result).then(() => { this.imgList.push(canvas.toDataURL()); this.loading = false; }); } }) .catch(() => { this.loading = false; }); },
/** * @description 上一页 */ prePage() { let page = this.currentPage; if (page !== 1) { page = page > 1 ? page - 1 : this.pageTotalNum; this.currentPage = page; } }, /** * @description 下一页 */ nextPage() { let page = this.currentPage; if (page !== this.pageTotalNum) { page = page < this.pageTotalNum ? page + 1 : 1; this.currentPage = page; } },
/** * @description 放大 */ zoomIn() { this.scale += 25; const itemEl = this.$refs["pdfRef"].$el; itemEl.style.width = parseInt(this.scale) + "%"; }, /** * @description 缩小 */ zoomOut() { this.scale -= 25; const itemEl = this.$refs["pdfRef"].$el; itemEl.style.width = parseInt(this.scale) + "%"; },
下载:从后端获取的文件流直接通过转blob、a标签下载就行
打印:this.$refs["pdfRef"].pdf能够拿到pdf对象,里面有个print的方法可以使用


Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。