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

  • c盘搬家(c盘)(c盘迁移)

    c盘搬家(c盘)(c盘迁移)

  • vivox70怎么设置壁纸(vivox70怎么设置微信视频美颜)

    vivox70怎么设置壁纸(vivox70怎么设置微信视频美颜)

  • 真我q3s怎么开热点(真我q3pro5g怎么开)

    真我q3s怎么开热点(真我q3pro5g怎么开)

  • oppo reno 4se有指纹解锁吗(opporeno4se是不是屏幕指纹)

    oppo reno 4se有指纹解锁吗(opporeno4se是不是屏幕指纹)

  • iphone11怎么关闭全部应用(iphone11怎么关闭勿扰模式)

    iphone11怎么关闭全部应用(iphone11怎么关闭勿扰模式)

  • 电脑鼠标箭头旁老有圏(电脑鼠标箭头旁边有个圆圈一直在闪)

    电脑鼠标箭头旁老有圏(电脑鼠标箭头旁边有个圆圈一直在闪)

  • 微视小圈圈怎么不转了(微视右上角没有小圆圈)

    微视小圈圈怎么不转了(微视右上角没有小圆圈)

  • 非连续文本是指什么(非连续文本包括哪些)

    非连续文本是指什么(非连续文本包括哪些)

  • 微信提现为什么让上传身份证(微信提现为什么被限制)

    微信提现为什么让上传身份证(微信提现为什么被限制)

  • 企业微信文档演示大小限制(企业微信文档演示和屏幕演示有什么区别)

    企业微信文档演示大小限制(企业微信文档演示和屏幕演示有什么区别)

  • 苹果11pro怎么录屏(苹果11pro max怎么录屏)

    苹果11pro怎么录屏(苹果11pro max怎么录屏)

  • 华为mate30摄像头有膜吗(华为mate30摄像头参数)

    华为mate30摄像头有膜吗(华为mate30摄像头参数)

  • 如果手机号注销了微信号还能用吗(如果手机号注销了银行卡怎么办)

    如果手机号注销了微信号还能用吗(如果手机号注销了银行卡怎么办)

  • 电脑开机报警器一直响怎么回事(电脑开机报警器一直响怎么回事还黑屏)

    电脑开机报警器一直响怎么回事(电脑开机报警器一直响怎么回事还黑屏)

  • los不亮怎么解决(los不亮是什么原因)

    los不亮怎么解决(los不亮是什么原因)

  • 刻录机是不是光驱(刻录机是不是光刻机)

    刻录机是不是光驱(刻录机是不是光刻机)

  • 拼多多闪电退货是什么意思(拼多多闪电退货怎么关闭)

    拼多多闪电退货是什么意思(拼多多闪电退货怎么关闭)

  • 通知栏hd收费吗(通知栏里hd)

    通知栏hd收费吗(通知栏里hd)

  • 苹果11和xr尺寸一样吗(苹果xr和11)

    苹果11和xr尺寸一样吗(苹果xr和11)

  • 美颜相机怎么设置九宫格拍照(美颜相机怎么设置广角模式)

    美颜相机怎么设置九宫格拍照(美颜相机怎么设置广角模式)

  • 手机照片如何调800x800(手机照片如何调像素)

    手机照片如何调800x800(手机照片如何调像素)

  • vivoz3返回键在哪(vivoz3手机返回键在哪里)

    vivoz3返回键在哪(vivoz3手机返回键在哪里)

  • Linux系统中查询发型版本号以及内核版本的命令总结(linux系统查询mac地址命令)

    Linux系统中查询发型版本号以及内核版本的命令总结(linux系统查询mac地址命令)

  • Linux下获取公网IP地址的方法(linux获取网络接口及ip命令)

    Linux下获取公网IP地址的方法(linux获取网络接口及ip命令)

  • CVPR 2022 最全整理:论文分方向汇总 / 代码 / 解读 / 直播 / 项目(更新中)(cvpr2020结果)

    CVPR 2022 最全整理:论文分方向汇总 / 代码 / 解读 / 直播 / 项目(更新中)(cvpr2020结果)

  • 4.6.2 万能转换器boost::lexical_cast(万能转换器mp4)

    4.6.2 万能转换器boost::lexical_cast(万能转换器mp4)

  • 已经认证不能抵扣怎么办
  • 未提供一般纳税人证明
  • 股东出资方式和比例是否合法?并说明理由
  • 赠送给客户的产品发货单要填写单价?
  • 公司取现备用金违法吗
  • 汽车销售行业印花税问题和对策
  • 固定报销额度算工资吗
  • 出售资产时递延所得税怎么处理
  • 进口商品不提供发票合法吗
  • 文化事业建设税怎么申报
  • 土地使用税如何计算缴纳
  • 旅游地产房产税
  • 国税2017年16号文
  • 长期股权投资的初始计量
  • 公司利润怎么提出来给老板
  • 代销协议书
  • 自然人扣缴系统怎么删除企业
  • 电子承兑如何转出换成现金
  • 清算期待摊费用怎么计算
  • 已计提月份的公式
  • 劳务费和工资薪金合并计算个人所得税合适吗
  • 固定资产改扩建过程中,发生的人工费用
  • 银行收付款凭证是什么
  • php实现批量删除
  • 继续涉入资产会计处理
  • 期间费用的含义
  • win7旗舰版系统怎么样
  • django ajax 分页
  • 伊莎贝尔公主
  • PHP:imageellipse()的用法_GD库图像处理函数
  • edge浏览器about:flags
  • 建筑行业施工规范有哪些
  • yolov4配置
  • k8s kubelet
  • ajax获取php数据
  • 勾选平台发票下载
  • 教育咨询公司能开培训费发票吗
  • mongodb replica set 添加删除节点的2种方法
  • 织梦程序
  • 财政拨款结转和财政拨款结余以前年度盈余调整
  • 用于研发的材料做成产品出售后怎么做账
  • 契税怎么征
  • 往期企业所得税报表更正
  • 电子承兑没到期可以提示付款吗
  • 无形资产的税收优惠政策
  • 工会经费和工会会费的区别与联系
  • 社会团体会员费怎么入账
  • 企业合并中或有对价的会计处理
  • 所得税 补缴
  • 其他应付款个人往来的涉税风险
  • 出口退税的计算与流程
  • 借款归还时的收据填写
  • 国有资产无偿划转协议
  • 工程与会计
  • 个体工商怎么申报
  • 私企需要计提盈余公积吗
  • mysql建索引有哪些策略和原则
  • sql server的mdf文件怎么导入数据库
  • mysql数据查询慢
  • win10系统设置快捷键
  • cmos设置密码开机密码
  • macbookairfacetime
  • linux怎么vi
  • 64位win10预览版10565更新补丁KB3105208后蓝屏怎么办?
  • iPhone怎么录制屏幕
  • 苹果mac系统怎么更新
  • 微软为什么这么贵
  • 如何实现仁
  • net命令大全
  • python twinter
  • JavaScript replace(rgExp,fn)正则替换的用法
  • javascript开发基础
  • python设计gui
  • 如何用jquery
  • Android 5.1 API 22 所有sdk文件下载地址
  • 小规模纳税人忘记作废发票导致超过免税范围
  • 国税局事业编制和公务员哪个比较好
  • 小规模开了红字发票申报表怎么填
  • 预测收入遵循什么方法
  • 电信宽带绑定的手机号怎么解除绑定
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设