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

  • 个税手续费返还要交企业所得税吗
  • 去年所得税汇算清缴补所得税
  • 每个月必报的税种
  • 有形资产租赁服务的税率
  • 金税四期监控个人在银行的存款吗
  • 母公司为子公司担保需要股东会决议吗
  • 房租怎么抵扣个税计算方法
  • 库存盘亏的原因
  • 股权转让后的实收资本怎么做账
  • 自建厂房可以不办理房产证吗
  • 营业外支出可以扣除吗
  • 以前纳税申报表在哪里查询
  • 资金账簿怎么交
  • 增值税抵扣联是什么意思
  • 一般纳税人有哪些费用
  • 培训学校税收筹划
  • 同业清算互联前置 骗局
  • 消费税税目是否含税
  • 个税专项附加扣除是什么意思
  • 参加会议属于什么工作类别
  • 软件产品加安装是混合销售吗?
  • 企业所得税法的主要内容
  • 员工个税需要计提吗现在
  • 银行利息为什么只算10个月
  • 一般纳税人存货入账价值
  • 网速突然变差是什么原因
  • 安卓系统详解
  • 在win7系统中文件属性有哪些
  • pps是啥文件
  • 无形资产的确认与计量
  • imgrd.exe是什么
  • 房产税的纳税申报与处理会计分录
  • 交完社保
  • 进口应税消费品所支付的金额不包括
  • php 正则函数
  • 交通运输企业会议记录
  • 滴滴发票开公司名称可以抵扣进项吗
  • 小规模拍卖公司怎么开票
  • 建行E信通贴现需要发票吗
  • laravel 分页 api
  • bg命令 将作业放到后台运行
  • 升级到miui14感觉耗电快了
  • 培训费个人的发票能开吗
  • 高新技术企业研发费用加计扣除
  • python __call__
  • 滞纳金是
  • 年终奖影响社保缴费基数吗
  • db2with
  • 小规模纳税人能开6%增值税专用发票吗
  • 包装物押金要计入增值税吗
  • 销售货物收入指企业销售什么取得的收入
  • 短期借款有哪几种类型
  • 旅客运输服务进项税抵扣文件
  • 开出去的发票没有进项发票应如何核算成本?
  • 新建厂房费用可以直接计入管理费用么
  • 会计里面的管理费用
  • 所得税汇算清缴需要调增的项目
  • 商业折扣和销售折让计入财务费用吗
  • 居间活动费用由谁负担
  • 股东现金存入公司账户,该如何做账?
  • gitlab linux
  • internetfeatures.exe是什么文件
  • vc软件是什么软件
  • win7系统电脑屏幕倒过来了怎么办
  • Win7旗舰版系统安装
  • xp系统如何获取ip地址
  • linux i3桌面
  • macosmajove
  • win7由于所要求的文件丢失或损坏
  • linux拉起进程
  • win10桌面图标排列设置
  • 批处理的应用
  • 动态修改ip
  • jquery自定义的方法有哪些
  • javascript模块化
  • 湖北耕地占用税标准
  • 一般纳税人按季申报的行业
  • 农用三轮车免征增值税文件
  • 如何认真贯彻落实中央八项规定,切实改进工作作风
  • 北京买新车购置税怎么算
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设