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

使用vue-pdf插件加载pdf

安装:

// 安装这个版本,其它版本会有千奇百怪的错,这个版本和4.0.0都是可以的
cnpm install vue-pdf@4.2.0// 安装pdfjs-dist
cnpm install pdfjs-dist@2.5.207

使用:

// 我的css样式是pxToRem,友友们使用可能样式会有所差距,自行调
<template><div id="container"><!-- 上一页、下一页 --><div class="right-btn"><!-- 输入页码 --><div class="pageNum"><input v-model.number="currentPage"type="number"class="inputNumber"@input="inputEvent()"></div><div @click="changePdfPage('first')"class="turn">首页</div><!-- 在按钮不符合条件时禁用 --><div @click="changePdfPage('pre')"class="turn-btn":style="currentPage===1?'cursor: not-allowed;':''">上一页</div><div @click="changePdfPage('next')"class="turn-btn":style="currentPage===pageCount?'cursor: not-allowed;':''">下一页</div><div @click="changePdfPage('last')"class="turn">尾页</div></div><div class="pdfArea"><pdf :src="src"ref="pdf"@loaded="loadPdfHandler"v-show="loadedRatio===1":page="currentPage"@num-pages="pageCount=$event"@progress="loadedRatio = $event"@page-loaded="currentPage=$event"@link-clicked="currentPage = $event"style="display: inline-block;width:100%"id="pdfID"></pdf></div><!-- 加载未完成时,展示进度条组件并计算进度 --><div class="progress"v-show="loadedRatio!==1"><el-progress type="circle":width="70"color="#53a7ff":percentage="Math.floor(loadedRatio * 100)"></el-progress><br><!-- 加载提示语 --><span>{{remindShow}}</span></div></div>
</template><script>
import pdf from 'vue-pdf'
export default {name: 'pdf-view',components: {pdf},data () {return {// ----- loading -----remindText: {loading: '加载文件中,文件较大请耐心等待...',refresh: '若卡住不动,可刷新页面重新加载...'},remindShow: '加载文件中,文件较大请耐心等待...',intervalID: '',// ----- vuepdf -----// src静态路径: /static/xxx.pdf// src服务器路径: 'http://.../xxx.pdf'src: 'https://sever.superzou.vip/o5CFL5N8kXpGFK746DlnU4Bb5z2R92MN/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20231017163845.pdf',// 当前页数currentPage: 0,// 总页数pageCount: 0,// 加载进度loadedRatio: 0}},created () {this.prohibit()},destroyed () {// 在页面销毁时记得清空 setIntervalclearInterval(this.intervalID)},mounted () {// 更改 loading 文字const _that = thisthis.intervalID = setInterval(() => {_that.remindShow === _that.remindText.refresh? _that.remindShow = _that.remindText.loading: _that.remindShow = _that.remindText.refresh}, 4000)// 监听滚动条事件this.listenerFunction()},methods: {// 监听滚动条事件listenerFunction (e) {document.getElementById('container').addEventListener('scroll', () => {}, true)},// 页面回到顶部toTop () {document.getElementById('container').scrollTop = 0},// 输入页码时校验inputEvent () {if (this.currentPage > this.pageCount) {// 1. 大于maxthis.currentPage = this.pageCount} else if (this.currentPage < 1) {// 2. 小于minthis.currentPage = 1}},// 切换页数changePdfPage (val) {if (val === 'pre' && this.currentPage > 1) {// 切换后页面回到顶部this.currentPage--this.toTop()} else if (val === 'next' && this.currentPage < this.pageCount) {this.currentPage++this.toTop()} else if (val === 'first') {this.currentPage = 1this.toTop()} else if (val === 'last' && this.currentPage < this.pageCount) {this.currentPage = this.pageCountthis.toTop()}},// pdf加载时async loadPdfHandler (e) {// 加载的时候先加载第一页this.currentPage = 1},// 禁用鼠标右击、F12 来禁止打印和打开调试工具prohibit () {// console.log(document)document.oncontextmenu = function () {return false}document.onkeydown = function (e) {if (e.ctrlKey && (e.keyCode === 65 || e.keyCode === 67 || e.keyCode === 73 || e.keyCode === 74 || e.keyCode === 80 || e.keyCode === 83 || e.keyCode === 85 || e.keyCode === 86 || e.keyCode === 117)) {return false}if (e.keyCode === 18 || e.keyCode === 123) {return false}}}}
}
</script><style lang="scss" scoped>
#container {overflow: auto;height: 800px;font-family: PingFang SC;width: 100%;display: flex;/* justify-content: center; */position: relative;
}/* 右侧功能按钮区 */
.right-btn {position: fixed;right: 5%;bottom: 20%;width: 60px;display: flex;flex-wrap: wrap;justify-content: center;z-index: 99;
}.pdfArea {width: 80%;
}/* ------------------- 输入页码 ------------------- */
.pageNum {margin: 10px 0;font-size: 7px;
}
/*在谷歌下移除input[number]的上下箭头*/
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {-webkit-appearance: none !important;margin: 0;
}
/*在firefox下移除input[number]的上下箭头*/
input[type='number'] {-moz-appearance: textfield;
}.inputNumber {border-radius: 8px;border: 1px solid #999999;height: 16px;font-size: 7px;width: 60px;text-align: center;
}
.inputNumber:focus {border: 1px solid #00aeff;background-color: rgba(18, 163, 230, 0.096);outline: none;transition: 0.2s;
}/* ------------------- 切换页码 ------------------- */
.turn {background-color: #888888;opacity: 0.7;color: #ffffff;height: 35px;width: 35px;border-radius: 50%;display: flex;align-items: center;justify-content: center;margin: 2px 0;font-size: 7px;
}.turn-btn {background-color: #000000;opacity: 0.6;color: #ffffff;height: 35px;width: 35px;border-radius: 50%;margin: 2px 0;display: flex;align-items: center;justify-content: center;font-size: 7px;
}.turn-btn:hover,
.turn:hover {transition: 0.3s;opacity: 0.5;cursor: pointer;
}/* ------------------- 进度条 ------------------- */
.progress {position: absolute;right: 50%;top: 50%;text-align: center;
}
.progress > span {color: #199edb;font-size: 14px;
}
</style>

报错: 

这样执行会报一个catch的错误,然后找到node_modules下面的vue-pdf目录src文件下面的pdfjsWrapper.js文件中,第197行的catch注释掉就好。

相关文章:

使用vue-pdf插件加载pdf

安装&#xff1a; // 安装这个版本&#xff0c;其它版本会有千奇百怪的错&#xff0c;这个版本和4.0.0都是可以的 cnpm install vue-pdf4.2.0// 安装pdfjs-dist cnpm install pdfjs-dist2.5.207 使用&#xff1a; // 我的css样式是pxToRem&#xff0c;友友们使用可能样式会有…...

BP蓝图映射到C++笔记1

教程链接&#xff1a;示例1&#xff1a;CompleteQuest - 将蓝图转换为C (epicgames.com) 1.常用的引用需要记住&#xff0c;如图所示。 2.蓝图中可以调用C函数&#xff0c;也可以实现C函数 BlueprintImplementableEvent:C只创建&#xff0c;不实现&#xff0c;在蓝图中实现 B…...

龙芯+RT-Thread+LVGL实战笔记(30)——电子琴演奏

【写在前面】正值期末,笔者工作繁忙,因此本系列教程的更新频率有所放缓,还望订阅本专栏的朋友理解,请勿催更。笔者在此也简要声明几点: 有些硬件模块笔者并没有,如LED点阵、压力传感模块、RFID模块等,因此这些模块的相关任务暂时无法给出经过验证的代码。其实,教程进行…...

Python Process创建进程(2种方法)详解

虽然使用 os.fork() 方法可以启动多个进程&#xff0c;但这种方式显然不适合 Windows&#xff0c;而 Python 是跨平台的语言&#xff0c;所以 Python 绝不能仅仅局限于 Windows 系统&#xff0c;因此 Python 也提供了其他方式在 Windows 下创建新进程。 Python 在 multiproces…...

树莓派4B 使用树莓派官方烧录器烧录ubuntu20.04.5 排坑

问题描述&#xff1a; 使用树莓派官方烧录器烧录ubuntu并且在烧录器中设置了电脑热点&#xff0c;但是无法连接WIFI。重启后也无效。 排坑&#xff1a; 1.首先打开/boot中的network-config&#xff0c;发现烧录器设置的密码是乱码&#xff0c;重新设置&#xff1b; 2.有博主说…...

鸿蒙开发(五)鸿蒙UI开发概览

从用户角度来讲&#xff0c;一个软件拥有好看的UI&#xff0c;那是锦上添花的事情。再精确的算法&#xff0c;再厉害的策略&#xff0c;最终都得通过UI展现给用户并且跟用户交互。那么&#xff0c;本篇一起学习下鸿蒙开发UI基础知识&#xff0c;认识下各种基本控件以及使用方式…...

应用层—HTTP详解(抓包工具、报文格式、构造http等……)

文章目录 HTTP1. 抓包工具的使用1.1 配置信息1.2 观察数据 2. 分析 https 抓包结果3. HTTP请求详解3.1 认识 URL3.1.1 URL 基本格式3.1.2 查询字符串 (query string)3.1.3 关于 URL Encode 3.2 认识 http 方法3.2.1 [经典问题] Get 和 Post 主要的区别是什么&#xff1f;&#…...

ISA Server 2006部署网站对比nginx

2024年了&#xff0c;我还是第1次使用ISA Server 。没办法在维护一个非常古老的项目。说到ISA Server可能有小伙们不清楚&#xff0c;但是说到nginx大家应该都知道吧。虽然他们俩定位并不相同&#xff0c;但是本文中提到的需求&#xff0c;他俩是都可以实现。 网上找的到的教程…...

CHAPTER 9: 《DESIGN A WEB CRAWLER》第9章 《设计一个web爬虫》

CHAPTER 9: 《DESIGN A WEB CRAWLER》第九章 设计一个web爬虫 在本章中&#xff0c;我们将重点介绍网络爬虫设计&#xff1a;一种有趣而经典的系统设计 面试问题。 网络爬虫被称为机器人或蜘蛛。它被搜索引擎广泛用于发现网络上的新内容或更新内容。内容可以是网页、图像、视频…...

java SSM网上小卖部管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM网上小卖部管理系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源 代码和数据库&#xff0c;系统主要…...

Java中集合元素的删除

关于集合元素的remove 重点&#xff1a;当集合的结构发生改变时&#xff0c;迭代器必须重新获取&#xff0c;如果还是用以前老的迭代器&#xff0c;会出现异常 java.util.ConcurrentModificationException 重点&#xff1a;在迭代集合元素的过程中&#xff0c;不能调用集合对象…...

HNU-数据挖掘-实验2-数据降维与可视化

数据挖掘课程实验实验2 数据降维与可视化 计科210X 甘晴void 202108010XXX 文章目录 数据挖掘课程实验<br>实验2 数据降维与可视化实验背景实验目标实验数据集说明实验参考步骤实验过程1.对数据进行初步降维2.使用无监督数据降维方法&#xff0c;比如PCA&#xff0c;I…...

【shell编程入门】正则表达式

正则表达式 特殊字符描述[]方括号表达式&#xff0c;表示匹配的字符集合&#xff0c;例如 [0-9]、[abcde]()标记子表达式起止位置*匹配前面的子表达式零或多次匹配前面的子表达式一或多次?匹配前面的子表达式零或一次\转义字符&#xff0c;除了常用转义外&#xff0c;还有&am…...

高效火情监测,科技助力森林防火【数字地球开放平台】

数字地球开放平台-以卫星遥感为核心的空天信息服务开放平台 (geovisearth.com) 2019年3月30日&#xff0c;四川省凉山州木里县爆发了一场森林火灾&#xff0c;火点位于海拔3800米左右&#xff0c;地形险峻、坡度陡峭、谷深难以抵挡火势。在扑救的过程中&#xff0c;27名森林消防…...

第14章_集合与数据结构拓展练习(前序、中序、后序遍历,线性结构,单向链表构建,单向链表及其反转,字符串压缩)

文章目录 第14章_集合与数据结构拓展练习选择填空题1、前序、中序、后序遍历2、线性结构3、其它 编程题4、单向链表构建5、单向链表及其反转6、字符串压缩 第14章_集合与数据结构拓展练习 选择填空题 1、前序、中序、后序遍历 分析&#xff1a; 完全二叉树&#xff1a; 叶结点…...

WEB前端3D变换效果以及如何应用js代码

WEB前端DAY8 变换效果3d <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>body{/* 视距&#xff1a;设置距离xy轴构成的平面有多少像素距离 */perspective: 500px;}div{/* 设置变化效果为3d *…...

Linux中的新建用户、切换用户

目录 一、Linux系统中有哪些用户 二、新建普通用户 三、root账号与普通账号的切换 一、Linux系统中有哪些用户 1.root 超级管理员&#xff08;不受权限约束&#xff09; 2.其他用户 普通用户&#xff08;受到权限约束&#xff09; 二、新建普通用户 创建新用户 sudo user…...

Vue3使用

1、列表实现 <el-table :data"tableData" border style"width: 100%" selection-change"handleSelectionChange" :header-cell-style"{text-align:center}"><el-table-column type"selection" width"55"…...

BindingException: Invalid bound statement (not found): xxMapper.deleteBatchIds

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): xxMapper.deleteBatchIds 在使用mybatisplus的deleteBatchIds方法的时候&#xff0c;发生如下异常 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): …...

开源图床LightPicture搭建本地图片管理系统并实现无公网IP远程访问

文章目录 1.前言2. Lightpicture网站搭建2.1. Lightpicture下载和安装2.2. Lightpicture网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 现在的手机越来越先进&#xff0c;功能也越来越多&#xff0c;而手机…...

LSTM预测不准?试试这个全局注意力“外挂”:一个PyTorch模块提升你的时序模型性能

LSTM预测不准&#xff1f;试试这个全局注意力“外挂”&#xff1a;一个PyTorch模块提升你的时序模型性能 当你发现精心调参的LSTM模型在预测股票价格、设备故障率或能源消耗时&#xff0c;总是错过关键转折点&#xff0c;问题可能不在你的数据清洗或超参选择——而是模型缺乏对…...

OBS智能背景移除插件:无绿幕实时抠图与低光增强完整指南

OBS智能背景移除插件&#xff1a;无绿幕实时抠图与低光增强完整指南 【免费下载链接】obs-backgroundremoval An OBS plugin for removing background in portrait images (video), making it easy to replace the background when recording or streaming. 项目地址: https:…...

实战演练:基于快马平台与vscode codex思想,快速构建业务数据可视化仪表盘

今天想和大家分享一个实战经验&#xff1a;如何快速构建一个业务数据可视化仪表盘。这个需求其实挺常见的&#xff0c;很多公司都需要通过直观的图表来展示销售数据、用户行为等关键指标。我最近在InsCode(快马)平台上尝试了这个项目&#xff0c;整个过程比想象中顺利很多。 需…...

intv_ai_mk11作品分享:会议纪要提炼、政策白话解读、技术术语通俗化实例

intv_ai_mk11作品分享&#xff1a;会议纪要提炼、政策白话解读、技术术语通俗化实例 1. 模型简介与核心能力 intv_ai_mk11是一款基于Llama架构的中等规模文本生成模型&#xff0c;特别擅长处理各类文本转换和解释任务。这个开箱即用的解决方案已经完成本地部署&#xff0c;用…...

United VARs CoE创享会重回上海,全球伙伴共议AI时代云ERP演进

时隔七年&#xff0c;United VARs Cloud ERP CoE 创享会再次回到中国&#xff01;3月10日至12日&#xff0c;由Acloudear司享承办的United VARs Cloud ERP CoE 创享会在上海举行。来自全球多家United VARs成员机构及SAP的专家与管理者齐聚上海&#xff0c;围绕 Cloud ERP 战略、…...

一、BLE入门:从广播信道到报文解析,构建无线连接基石

1. BLE技术入门&#xff1a;无线世界的敲门砖 第一次接触BLE技术时&#xff0c;我完全被那些专业术语搞懵了。什么广播信道、报文解析&#xff0c;听起来就像天书一样。但当我真正动手调试一个智能手环项目后&#xff0c;才发现BLE其实就像两个人在嘈杂的教室里传纸条——需要…...

AI赋能编辑器:借助快马为Notepad++理念添加智能编程助手

今天想和大家分享一个有趣的实践&#xff1a;如何为传统代码编辑器&#xff08;比如Notepad&#xff09;注入AI能力。虽然Notepad本身轻量高效&#xff0c;但缺乏现代智能辅助功能。通过结合InsCode(快马)平台的AI能力&#xff0c;我们可以轻松实现智能补全、错误检查和代码优化…...

LuckyLilliaBot架构解析:NTQQ OneBot API插件的深度技术实现指南

LuckyLilliaBot架构解析&#xff1a;NTQQ OneBot API插件的深度技术实现指南 【免费下载链接】LuckyLilliaBot NTQQ的OneBot API插件 项目地址: https://gitcode.com/gh_mirrors/li/LuckyLilliaBot LuckyLilliaBot是一款基于OneBot 11协议的开源QQ机器人框架&#xff0c…...

手把手教你用Matlab把PLL相噪曲线算成Jitter(附三种方法源码)

从PLL相噪曲线到Jitter计算的Matlab实战指南 在射频系统设计中&#xff0c;锁相环(PLL)的相位噪声性能直接影响通信质量与系统稳定性。频谱分析仪虽能捕捉相噪曲线&#xff0c;但工程师常需将其转换为更直观的时间抖动(Jitter)指标。本文将系统介绍三种Matlab实现方案&#xff…...

2026年AI就业风口!这5个神仙岗位,高薪低门槛,普通人也能转行!

根据LinkedIn数据&#xff0c;2026年AI相关岗位增长迅猛&#xff0c;其中AI咨询顾问、机器学习工程师、AI产品经理、数据与检索工程师等岗位需求旺盛&#xff0c;且部分岗位对计算机科学学位要求不高。文章详细介绍了这5个岗位的火热原因、转行路径及薪资范围&#xff0c;并给出…...