位置: 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快捷键)

  • T3出行怎么预约打车(t3出行怎么预约打车基础费)

    T3出行怎么预约打车(t3出行怎么预约打车基础费)

  • 淘宝直通车必须要2心吗(淘宝直通车需要开启智能创意吗)

    淘宝直通车必须要2心吗(淘宝直通车需要开启智能创意吗)

  • 兄弟7340硒鼓清零(兄弟7470硒鼓清0)

    兄弟7340硒鼓清零(兄弟7470硒鼓清0)

  • 淘宝评价了没显示出来(淘宝评价没显示是什么情况)

    淘宝评价了没显示出来(淘宝评价没显示是什么情况)

  • 苹果7屏幕刷新率(苹果屏幕刷新率)

    苹果7屏幕刷新率(苹果屏幕刷新率)

  • 为什么登录icloud很慢(为什么登录icloud显示需要连接互联网)

    为什么登录icloud很慢(为什么登录icloud显示需要连接互联网)

  • 快手商家号认证费可以退吗(快手商家号认证需要花钱吗)

    快手商家号认证费可以退吗(快手商家号认证需要花钱吗)

  • jbl耳机怎样查真伪(jbl耳机查真假)

    jbl耳机怎样查真伪(jbl耳机查真假)

  • 苹果手机怎么添加微信支付(苹果手机怎么添加nfc钥匙)

    苹果手机怎么添加微信支付(苹果手机怎么添加nfc钥匙)

  • xr网络信号不好怎么解决(xr信号太不好了)

    xr网络信号不好怎么解决(xr信号太不好了)

  • 快手怎么上传本地长视频(快手怎么上传本地作品)

    快手怎么上传本地长视频(快手怎么上传本地作品)

  • 淘宝同时登录几个手机(淘宝可以一次登录几个设备)

    淘宝同时登录几个手机(淘宝可以一次登录几个设备)

  • ios13怎么打开未信任软件(苹果未开启功能怎么开启)

    ios13怎么打开未信任软件(苹果未开启功能怎么开启)

  • vivoy51权限管理在哪(vivoy55a权限管理在哪里)

    vivoy51权限管理在哪(vivoy55a权限管理在哪里)

  • 小米mix3触屏校准(小米mix3屏幕不灵敏如何调试)

    小米mix3触屏校准(小米mix3屏幕不灵敏如何调试)

  • 如何使iwatch屏幕常亮(iwatch怎么让屏幕暗掉)

    如何使iwatch屏幕常亮(iwatch怎么让屏幕暗掉)

  • 苹果11悬浮球怎么设置(苹果11悬浮球怎么截屏)

    苹果11悬浮球怎么设置(苹果11悬浮球怎么截屏)

  • kirin980是麒麟980吗(kirin980是什么处理器和麒麟980)

    kirin980是麒麟980吗(kirin980是什么处理器和麒麟980)

  • usb configuration是什么意思啊

    usb configuration是什么意思啊

  • pu口袋校园登不进去(pu口袋校园登不进去 pu口袋校园打不开)

    pu口袋校园登不进去(pu口袋校园登不进去 pu口袋校园打不开)

  • 怎么查手机号绑定了哪些东西(怎么查手机号绑了多少软件)

    怎么查手机号绑定了哪些东西(怎么查手机号绑了多少软件)

  • ios12怎么信任软件(苹果ios12.4怎么信任软件)

    ios12怎么信任软件(苹果ios12.4怎么信任软件)

  • iphone x屏幕发黄怎么办(苹果x为啥屏幕发黄)

    iphone x屏幕发黄怎么办(苹果x为啥屏幕发黄)

  • Linux中用于进程显示的top命令使用实例集锦(linux的进程类型)

    Linux中用于进程显示的top命令使用实例集锦(linux的进程类型)

  • 怎么给U盘杀毒(本地磁盘c满了怎么清理)

    怎么给U盘杀毒(本地磁盘c满了怎么清理)

  • python如何将json转成字符串(Python如何将字符串转化为数字)

    python如何将json转成字符串(Python如何将字符串转化为数字)

  • HashMap源码,看我这篇就够了(hashmap resize源码)

    HashMap源码,看我这篇就够了(hashmap resize源码)

  • 工会可以现金支付吗
  • 跨月冲红的发票怎么做会计分录
  • 递延所得税资产是什么
  • 小微企业附加税税收优惠政策
  • 公司注销银行公户怎么注销
  • 在建工程会计分录什么意思
  • 成本暂估跨年度要怎么处理?
  • 金融机构往来利息支出
  • 第三方投资入股
  • 水电费差价收入计算增值税公式是怎样的?
  • 高新补贴收入计入什么科目
  • 重新刻发票章需要什么资料
  • 营业成本包括费用类吗
  • 新开公司季初季末人数和资产可以填0吗
  • 买一赠一商品必须一样吗
  • 个税返还怎样申请退税
  • 2020年餐饮行业免税政策
  • 上个月暂估这个月成本怎么调整
  • 一般纳税人的月报,季报年报
  • 非常损失计入
  • 服务业公司取得的成果
  • cmd. exe 程序错误
  • php编程代码
  • 主播录屏软件哪个好
  • 九斑蛾,瑞士 (© Thomas Marent/Minden Pictures)
  • 备用金支出没有发票怎么办
  • 免税是政府补助吗
  • 设备租赁费怎么入账
  • 超参数设置
  • 自动驾驶车祸
  • 帝国cms移动端
  • python 字典中的字典
  • 中药和中药饮片有区别吗
  • 零申报不报税有什么后果
  • 销售车位怎么找客户
  • 住宿收据怎样写
  • 企业购房如何入账
  • SQL server 2008中的数据库能否只包含数据文件
  • 转让厂房需要交哪些税
  • sql查询必须在什么的基础上创建
  • sql初学者视频教程
  • 出口货物退运已补税(未退税)证明
  • 跨月发票作废怎么做会计分录
  • 存款基准利率是不是利息
  • 小型微利企业预缴企业所得税怎么算
  • 维修服务开票
  • 超市小票能作为证据用吗
  • 待认证进项税额期末怎么办
  • 企业给职工提供的免费住房是不是合法住宅?
  • 进项税大于销项税需要交增值税吗
  • Slave memory leak and trigger oom-killer
  • sql需要哪些基础
  • fedora常用命令
  • win10电脑出现invalid partition table怎么弄
  • centos防火墙策略配置
  • 虚拟网卡在哪里设置
  • 如何删除win7系统
  • windows10预览版怎么样
  • 文件夹删不掉显示另一个程序打开
  • win8系统怎么调出运行窗口
  • windows7如何启动任务管理器
  • win8.1和win10哪个好用
  • centos端口绑定
  • win8上不了网
  • webpack 主题切换
  • jquery 多选
  • js中的冒泡排序原理
  • js对象常用方法
  • 关于H1的位置解析
  • Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
  • jquery dom对象
  • shell脚本cut -d
  • javascript教程
  • python怎么弄中文
  • js设置
  • jquery选择器大全
  • jquery悬浮弹出提示框
  • 河南城乡居民医疗保险电话
  • 新收入准则租赁业务
  • 深两优3117审定号
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设