当前位置: 首页 > news >正文

vue-pdf-embed预览PDF

一、vue-pdf-embed

链接:Yarn

1、安装插件

npm install vue-pdf-embed

2、文件中引入(分页效果已实现,样式请自行修改)

<template><div class="download-pdf-preview" style="height: 450px; border:10px solid #D4D4D7;overflow: hidden; overflow-y: scroll"><!-- <vue-pdf-app style="height: 430px;" :pdf="pdfURL"></vue-pdf-app> --><vue-pdf-embed ref="morePDF" :source="pdfURL" :page="currentPage" ></vue-pdf-embed><div class="ins-pdf-button-box"><span @click.stop="prePage">上一页</span><span>{{currentPage}}/{{pages}}</span><span @click.stop="nextPage">下一页</span></div></div><div style="text-align: right; margin-top: 10px;"><Button type="text" v-if="back" style="color: #FF7D48; width: 100px;" @click="handleBack()">返回列表</Button><Button style="color: #FF7D48; width: 100px; border-color: #FF7D48;" @click="handleDownload()">下载</Button></div>
</template><script>
import {downloadBlob,base64ToBlob,blobToUrl} from '@/utils/index.js'
import VuePdfEmbed from "vue-pdf-embed"export default {components: {VuePdfEmbed},emits : ['on-back'],props : {info : {type : Object,default : {}},back : {type:Boolean,default : false}},data(){return {	pdfURL : ''	,//PDF URLpages: [],numPages : 0,		//分页currentPage : 1, //当前显示页数}},computed : {},watch: {info : {handler(data) {if(data?.base64Str){const blob = base64ToBlob(data.base64Str);  this.pdfURL= blobToUrl(blob)}},deep: true,immediate: true}},methods : {//返回列表handleBack(){this.$emit('on-back')},//下载handleDownload(){downloadBlob(this.pdfURL,this.info.fileName)},async getPDFnums(url) {const page = await VuePdfEmbed.getDocument(url).promisethis.pages = page.numPagesthis.currentPage = 1},// 上一页prePage() {var page = this.currentPagepage = page > 1 ? page - 1 : this.numPagesthis.currentPage = page},// 下一页nextPage() {var page = this.currentPagepage = page < this.numPages ? page + 1 : 1this.currentPage = page}},created(){},mounted () {}
}	
</script><style>
</style>

3、插件支持PDF地址,base64或二进制数据需要生成PDF地址

// PDF base64 转地址
export function base64ToBlob(base64Data){const binary = atob(base64Data);  const len = binary.length;  const buffer = new Uint8Array(len);  for (let i = 0; i < len; i++) {  buffer[i] = binary.charCodeAt(i);  }  return new Blob([buffer], { type: 'application/pdf' });  
}// PDF base64 转地址
export function blobToUrl(blob) {  return URL.createObjectURL(blob);  
}

4、插件支持预览CA电子签名及腾讯电子签名,可兼容PC和移动端的PDF预览。 

注意:如果安装完毕并正确引用后无法加载PDF文件,且控制台无报错原因,请降低改插件的版本例:1.2.1

相关文章:

  • 基于SpringBoot的校园周边美食探索及分享平台【附源码+数据库+文档下载】
  • 什么是内存刷新
  • 视频翻译软件有哪些?推荐5款视频翻译工具[特殊字符][特殊字符]
  • 各类型和字节数组互相转换
  • #将一个 .c 文件转变为可直接运行的文件过程及原理
  • 处理均值的配对比较
  • 【记录nginx请求头参数丢失问题】
  • TongWeb7.0常用-D参数说明
  • 企业级商城系统容器化部署技术方案
  • 产品文档撰写--金字塔原理--实战3
  • Linux系统管理与编程18:自动化部署dhcp服务
  • Matlab 基于滑模自抗扰的高速列车自动驾驶算法研究
  • RWA开发全解析:技术架构、合规路径与未来趋势
  • 健康养生指南:解锁活力生活的科学密码
  • 提权相关记录
  • qt命名空间演示
  • 【触想智能】医疗一体机在医疗领域上的应用优势分析
  • 线程的让位(Yield)
  • windows 在安装 Ubuntu-20.04 显示操作超时解决办法
  • rufus+Ubuntu 18.04 镜像
  • 熊出没!我驻日本札幌总领馆提示中国公民注意人身安全
  • 高适配算力、行业大模型与智能体平台重塑工业城市
  • 上海下周最高气温在30℃附近徘徊,夏天越来越近
  • 阶跃星辰CEO姜大昕:追求智能上限仍是最重要的事,多模态的“GPT-4时刻”尚未到来
  • 《三餐四季》广东篇今晚开播:食在岭南,遇见百味
  • 当我们提起拉动消费时,应该拉动什么消费?