当前位置: 首页 > 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

http://www.xdnf.cn/news/404299.html

相关文章:

  • mac M2能安装的虚拟机和linux系统系统
  • 寻找远程桌面管理器的5个关键功能
  • Spring Boot 使用Itext绘制并导出PDF
  • Docker Volumes
  • 一周学完计算机网络之三:1、数据链路层概述
  • 微信小程序单双周选择排序有效果图
  • Java游戏服务器开发流水账(6)网关服务器简介
  • Python 字符串
  • 基于STM32_HAL库的IIC通信并驱动OLED屏幕
  • 用 AltSnap 解锁 Windows 窗口管理的“魔法”
  • UE RPG游戏开发练手 第二十二课 卸下手上武器
  • 【prometheus+Grafana篇】基于Prometheus+Grafana实现windows操作系统的监控与可视化
  • 小刚说C语言刷题—1149 - 回文数个数
  • 电厂除灰系统优化:时序数据库如何降低粉尘排放
  • Android Studio 中 build、assemble、assembleDebug 和 assembleRelease 构建 aar 的区别
  • 知名人工智能AI培训公开课内训课程培训师培训老师专家咨询顾问唐兴通AI在金融零售制造业医药服务业创新实践应用
  • 自然语言处理(NLP)在影评情感分析中的处理流程示例
  • LVGL(lv_list列表控件)
  • ORB特征点检测算法
  • 如何更改默认字体:ONLYOFFICE 协作空间、桌面编辑器、文档测试示例
  • Spring AI 与 Hugging Face 深度集成:打造高效文本生成应用
  • 扩展:React 项目执行 yarn eject 后的 config 目录结构详解
  • Spring AI 与 Groq 的深度集成:解锁高效 AI 推理新体验
  • 七、MyBatis-Plus高级用法:最优化持久层开发
  • 从0开始学习大模型--Day07--大模型的核心知识点
  • TCPIP详解 卷1协议 十 用户数据报协议和IP分片
  • 还在用付费?免费它不香吗
  • 集群脑裂危机!金仓数据库双主故障如何紧急救援?​
  • 电商物流管理优化:从网络重构到成本管控的全链路解析
  • OSI 7层模型