位置: IT常识 - 正文

vue通过url方式展示PDF方法总结(vue通过url访问单个页面)

编辑:rootadmin
vue通过url方式展示PDF方法总结

推荐整理分享vue通过url方式展示PDF方法总结(vue通过url访问单个页面),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue如何访问外部url,vue通过url访问单个页面,vue_app_url,vue中url存在的两种方式,vue url-loader,vue url,vue url,vue url-loader,内容如对您有帮助,希望把文章链接给更多的朋友!

最近vue项目中遇到预览pdf出现乱码问题,尝试了各种办法受尽折磨,以此记录一下使用的几种方法

1.使用pdfjs-dist 插件,通过iframe标签显示 

首先 npm install pdfjs-dist --save

 npm直接下载插件  npm install --save pdfjs-dist@2.0.943,@2.0.943这是指定版本号,不需要指定版本的就不需要带,下载后在使用的页面直接引入。

 然后直接设置pdf路径就可以直接展示,downloadUrl 是插件中的viewer.html地址,resFile是文件下载地址,到此就能正常预览PDF,组件功能也很多,如需要额外的功能也可以在viewer.js自行修改

vue通过url方式展示PDF方法总结(vue通过url访问单个页面)

 2.使用vue-pdf插件

        执行下面命令下载插件(vue-pdf是基于pdfjs-dist),并修改pacakge.json文件 

        npm i pdfjs-dist@2.5.207 --save        npm i vue-pdf@4.2.0 --save

        "dependencies": {                   "pdfjs-dist": "2.5.207",                   "vue-pdf": "4.2.0",           }

        在使用的页面中直接引入插件,标签为<pdf>就可以,路径赋值同第一种方法

 3.第三种方法使用了pdfjs-dist插件,通过url实现PDF转图片显示

引入需要的插件pdfjs-dist,workerSrc(具体功能可以百度,没搞明白)

 本地文件URL:

 通过URL转换blob类型,然后转为base64,这块可以直接拿去用,getDay()方法可以换成自己想要的文件名,这个方法转成base64后是包含前面类型的,又处理了一下,看个人需求

fileLinkToStreamDownload(url) { let fileName = this.getDay() let reg = /^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~\/])+$/ if (!reg.test(url)) { throw new Error('传入参数不合法,不是标准的文件链接') } else { let xhr = new XMLHttpRequest() xhr.open('get', url, true) xhr.setRequestHeader('Content-Type', `application/pdf;charset-UTF-8`) xhr.responseType = 'blob' let that =this xhr.onload = function() { if (this.status == 200) { //接受二进制文件流 var blob = this.response // that.downloadExportFile(blob, fileName); that.blobToBase64(blob).then(res => { // blob转base64 let baseArr = res.split(','); that.showPdf(baseArr[1]); }) } } xhr.send() } }, //Blob类型转BASE64 blobToBase64(blob) { return new Promise((resolve, reject) => { const fileReader = new FileReader(); fileReader.onload = (e) => { resolve(e.target.result); }; // readAsDataURL fileReader.readAsDataURL(blob); fileReader.onerror = () => { reject(new Error('blobToBase64 error')); }; }); }, getDay() { let time = new Date(), year = time.getFullYear(), month = time.getMonth() + 1, day = time.getDate(), timeStem = time.getTime() return `${year}/${month}/${day}/${timeStem}.pdf` },

拿到base64后,开始转图片处理:这个原理这里不多说了,也是照搬的, 如果PDFJS.getDocument()获取不到pdf对象,可以考虑一下版本问题(@2.2.228亲测好用)

async showPdf(base64Val) { let pdfList = document.querySelector('.pdfList') //通过querySelector选择DOM节点,使用document.getElementById()也一样 let base64 = base64Val //获得bas464编码 let decodedBase64 = window.atob(base64) //使用浏览器自带的方法解码 let pdfCurrent = await PDFJS.getDocument({data: decodedBase64}) //返回一个pdf对象 let pages = pdfCurrent.numPages //
本文链接地址:https://www.jiuchutong.com/zhishi/296160.html 转载请保留说明!

上一篇:Vue3 项目中使用setup()函数报错,script setup cannot contain ES module exports(vue3使用教程)

下一篇:VScode常用快捷键、(vscodehtml快捷键)

  • 华为pro20什么时候上市的(华为pro20pro)(华为pro20什么时候出的)

    华为pro20什么时候上市的(华为pro20pro)(华为pro20什么时候出的)

  • 京东白条额度怎么取出来(京东白条额度怎么涨)

    京东白条额度怎么取出来(京东白条额度怎么涨)

  • 华为nova6的耳机孔在哪里(华为nova6的耳机怎么连接)

    华为nova6的耳机孔在哪里(华为nova6的耳机怎么连接)

  • ipad中间有个圆圈(苹果ipad中间那个圆点怎么设置)

    ipad中间有个圆圈(苹果ipad中间那个圆点怎么设置)

  • 路由器1900m和1200m有什么区别(路由器1900m和2100m的区别)

    路由器1900m和1200m有什么区别(路由器1900m和2100m的区别)

  • 淘宝淘友动态在哪里看(淘宝朋友动态)

    淘宝淘友动态在哪里看(淘宝朋友动态)

  • 卡1仅限紧急呼叫怎么回事(卡1仅限紧急呼叫是什么意思)

    卡1仅限紧急呼叫怎么回事(卡1仅限紧急呼叫是什么意思)

  • 掌上电力登录失败是怎么回事

    掌上电力登录失败是怎么回事

  • 快手提现有额度限制吗(快手提现额度太大提现到哪里)

    快手提现有额度限制吗(快手提现额度太大提现到哪里)

  • oppor11s运行内存越来越少怎么办 (oppor11s运行内存多少)

    oppor11s运行内存越来越少怎么办 (oppor11s运行内存多少)

  • 能远程控制没联网的电脑么(远程控制连不上什么原因)

    能远程控制没联网的电脑么(远程控制连不上什么原因)

  • 苹果8plus和xsmax对比

    苹果8plus和xsmax对比

  • 苹果充电线不用原装的有影响吗(苹果充电线不用原装头冲上电ma)

    苹果充电线不用原装的有影响吗(苹果充电线不用原装头冲上电ma)

  • app频繁闪退怎么解决(app频繁闪退怎么办)

    app频繁闪退怎么解决(app频繁闪退怎么办)

  • 快手粉丝亲密值怎么涨(快手粉丝亲密度)

    快手粉丝亲密值怎么涨(快手粉丝亲密度)

  • vivo软件锁怎么设置密码(vivo软件锁怎么开)

    vivo软件锁怎么设置密码(vivo软件锁怎么开)

  • 小米ai音箱如何增减音量(小米ai音箱如何连接wifi)

    小米ai音箱如何增减音量(小米ai音箱如何连接wifi)

  • oppok1怎么强行关机(oppo强制关机怎么关闭)

    oppok1怎么强行关机(oppo强制关机怎么关闭)

  • 爱奇艺为什么突然没有字幕了(爱奇艺为什么突然没有弹幕了)

    爱奇艺为什么突然没有字幕了(爱奇艺为什么突然没有弹幕了)

  • 一个32kb的存储器共有多少个存储单元(一个32kb的存储器,用十六进制对他的地址进行编码)

    一个32kb的存储器共有多少个存储单元(一个32kb的存储器,用十六进制对他的地址进行编码)

  • ps怎么正确使用网格(ps该怎么用)

    ps怎么正确使用网格(ps该怎么用)

  • 解除微信手机电脑同步(微信怎么解除电话)

    解除微信手机电脑同步(微信怎么解除电话)

  • 苹果手机调时间在哪里调(苹果手机调时间字体怎么调)

    苹果手机调时间在哪里调(苹果手机调时间字体怎么调)

  • erp管理系统怎么操作(erp管理系统怎么作废退款)

    erp管理系统怎么操作(erp管理系统怎么作废退款)

  • vm虚拟机怎么安装Win11系统?Win11系统安装到vm虚拟机详细图文教程(VM虚拟机怎么安装网心容器)

    vm虚拟机怎么安装Win11系统?Win11系统安装到vm虚拟机详细图文教程(VM虚拟机怎么安装网心容器)

  • 使用c++onnxruntime部署yolov5模型并使用CUDA加速(超详细)(使用二氧化碳灭火器时人应该站在什么位置)

    使用c++onnxruntime部署yolov5模型并使用CUDA加速(超详细)(使用二氧化碳灭火器时人应该站在什么位置)

  • mysql union实现全外连接查询(mysql union or)

    mysql union实现全外连接查询(mysql union or)

  • phpcms上传图片传不了怎么办(phpcms任意文件上传)

    phpcms上传图片传不了怎么办(phpcms任意文件上传)

  • 应交税费转结哪里去
  • 个所税包括什么
  • 计提坏账后又收回怎么做
  • 转让财产损失是指什么
  • 原材料入库进项税
  • 个独企业缴纳个人经营所得税额的会计分录
  • 社保漏缴1个月怎么补缴
  • 接受原材料投资的会计处理
  • 用友如何取消月末结转
  • 从农民个人手里获取资源
  • 固定资产怎么盘点
  • 购销企业
  • 公司为员工买保险好还是个体户为员工买保险好
  • 补偿款开具发票
  • 新注册的公司需要公示吗
  • 培训费的进项需要转出吗
  • 旧发票专用章如何处理
  • 劳务费增值税专用发票虚开一万元怎么补救
  • 产品售后服务规定
  • 付款凭证和记账凭证一样吗
  • 公司缴纳的社保离职后自己可以缴纳社保
  • 外派人员计算个人所得税可否有附加扣除
  • 个税起征点是
  • kb4586853更新
  • 金税盘的服务费
  • 建筑业会计需要做到哪些
  • 现金流方法
  • thinkphp查询版本号
  • 印花税需要交钱吗
  • 微信小程序中如何打开不加检验文件的网页
  • php教程 ftp 函数
  • php中定义函数
  • 《中华人民共和国民法典》
  • 银行同业利率
  • 电子票开票人复核人一样有影响吗
  • mongodb bi
  • 电子发票报销需要签字吗
  • 研发企业税率是多少
  • 季度企业所得税资产总额怎么填
  • 一次性加速折旧考虑残值吗
  • 分配人工费的会计分录
  • 服务业有制造费用吗
  • 合伙企业分红怎么做账
  • 计提未到期责任准备金的意义
  • 减少实收资本会影响资产吗
  • 无形资产根据什么科目填列
  • 登记账簿遇到的问题及解决
  • 支付厂房租金计入什么会计科目
  • 收到免费赠送的产品怎么做账
  • 开票软件升级包
  • 成本核算方法有哪几种
  • 营业收入和销售收入的比值
  • mysql数据库备份与恢复的常用方法有几种
  • 用户画像
  • win7系统怎么对外发送wifi信号
  • windows7卸载所有软件
  • linux系统垃圾怎么清理
  • 怎么把html转换成psd
  • linux gunzip
  • pb程序是什么
  • win7系统如何关闭更新系统
  • win10系统怎么把ie浏览器放到桌面
  • 删掉sam文件后无法开机
  • win10系统开机后任务栏无响应怎么解决
  • win8的ie浏览器
  • opengl光照设置
  • 批处理setlocal
  • android launchers
  • 判断文件是否存在 java
  • 先序遍历dlr
  • js怎么输出文字
  • jquery1.8
  • SQLite3中文编码 Python的实现
  • javascript例题
  • 怎样学好js中的逻辑
  • jquery第十章上机
  • 成都税务局网上办事大厅
  • 河北省税务局对外公开电话
  • 建筑增值税税率历次调整
  • 公寓土地增值税怎么算
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设