位置: IT常识 - 正文

微信小程序实现PDF预览功能——pdf.js(含源码解析)(微信小程序实现页面跳转)

编辑:rootadmin
微信小程序实现PDF预览功能——pdf.js(含源码解析) 文章目录前言一、pdf.js 是什么?二、使用步骤1.下载库文件2.使用方式微信小程序端——使用 web-view 标签H5 端——使用 iframe 标签(使用vue框架)3.更改源码如何隐藏顶部工具栏如何让用户强制阅读一定时间如何获取pdf总页数如何获取pdf当前页数将总页数和当前页数发送给小程序总结前言

推荐整理分享微信小程序实现PDF预览功能——pdf.js(含源码解析)(微信小程序实现页面跳转),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:微信小程序实现轮播效果的组件,微信小程序实现灯泡开关效果,微信小程序实现懒加载,微信小程序实现页面跳转,微信小程序实现轮播效果的组件,微信小程序实现发红包,微信小程序实现聊天功能,微信小程序实现懒加载,内容如对您有帮助,希望把文章链接给更多的朋友!

前一段时间遇到了一个需求,关于 pdf 文件的预览,客户要求如下:

只能在微信小程序内预览,不能调起本地浏览器预览;需要让用户强制阅读 10s 后才算阅读完成,进而进行下一步操作;用户不能下载预览的 pdf 文件;

因为一些原因(此处省略一万字🐎),这个项目具有 H5 端和原生微信小程序端,并且他们有着相同的业务逻辑😊,所以最好的办法就是设计出一套方案适用两端,前期做了一些尝试,可以看这篇文章,最后决定使用 pdf.js 来实现业务要求。

一、pdf.js 是什么?

PDF.js 由 Mozilla 提供支持。目标是创建一个通用的、基于 Web 标准的平台,用于解析和呈现 PDF。

二、使用步骤1.下载库文件

前往 pdf.js 的 官网 下载库文件,我们下载哪个版本都是可以的,后者适用于旧版浏览器,我这里下载的后者。

下载完成后,因为微信小程序打包的限制,我将库文件放到腾讯云服务器上,如果想测试可以联系我提供测试资源。 H5 可以放到本地,目录如下:

2.使用方式

通过web目录下 viewer.html 查看器 + pdf文件路径预览pdf文件

yourPath/web/viewer.html?file=pdfPath微信小程序端——使用 web-view 标签微信小程序实现PDF预览功能——pdf.js(含源码解析)(微信小程序实现页面跳转)

代码示例:

//.wxml<web-view src="{{pdfView+pdfUrl}}" ></web-view>//.jsdata: {// viewer.html 查看器的路径 pdfView:"yourPath/web/viewer.html?file=", // 要预览的 pdf 文件的路径 pdfUrl:"http://play.li-stack.top:88/pdf/sjisr-3-2-36-42.pdf" },

运行效果:

H5 端——使用 iframe 标签(使用vue框架)

代码示例:

<template> <div> <iframe :src="src" style="width: 100%;height: 100vh" ></iframe> </div></template><script> export default { name: "myTestTwo", data(){ return { url:'http://play.li-stack.top:88/pdf/sjisr-3-2-36-42.pdf', src:'' } }, mounted() { this.getUrl(); }, methods :{ getUrl:function () { this.src = '/pdfplugin/web/viewer.html?file=' + this.url } } }</script><style scoped></style>

运行效果:

注意事项:

web-view 标签默认铺满全屏,会覆盖其他组件;H5项目使用 pdf.js 注意跨域问题;3.更改源码如何隐藏顶部工具栏

在业务要求中,不能让用户下载 pdf ,我这里处理的办法就是将顶部工具栏隐藏 处理方法:

在 web 文件夹下的 viewer.html 文件,搜到 <div class="toolbar">将其改为 <div class="toolbar" style="display:none">这样就可以隐藏了。如何让用户强制阅读一定时间

在让用户强制阅读时,一定是 pdf 文件先加载完成,才开始倒计时。 处理方法:

在 viewer.js 中找到 load 函数(可直接搜索load: function load(pdfDocument定位)) ,部分代码如下load: function load(pdfDocument) { var _this11 = this; this.pdfDocument = pdfDocument; pdfDocument.getDownloadInfo().then(function (_ref4) { var length = _ref4.length; _this11._contentLength = length; _this11.downloadComplete = true; _this11.loadingBar.hide(); firstPagePromise.then(function () { _this11.eventBus.dispatch("documentloaded", { source: _this11 }); }); });//添加以下代码let mytime = 10 let timeout = setInterval(()=>{ console.log("倒计时:",mytime) if(mytime == 0){ clearTimeout(timeout) }else{ --mytime } },1000) …… }当pdf加载成功后运行效果,页面渲染效果大家可以自行实现 如何获取pdf总页数

同样在上述 load 函数中,当pdf加载完成后,pdfDocument 属性中就包含了当前 pdf 的总页数 处理方法:可通过 pdfDocument.numPages 获取

如何获取pdf当前页数

如果能获取当前页数,也获取了总页数,这就可以实现阅读进度了,当然阅读进度的细节还有很多,比如用户很快地往下滑,这种肯定不能算是真正阅读了,在这里我就不细分了,下面来获取一下当前页数 处理方法:

可以在本地储存中获取,键名:pdfjs.history;找到函数 function webViewerPageChanging(_ref15) ,当每次滑动屏幕时,每经过一个页面就会得到当前页数,代码如下:function webViewerPageChanging(_ref15) { var pageNumber = _ref15.pageNumber, pageLabel = _ref15.pageLabel; //这里打印出来 console.log(pageNumber) PDFViewerApplication.toolbar.setPageNumber(pageNumber, pageLabel); PDFViewerApplication.secondaryToolbar.setPageNumber(pageNumber); if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) { PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(pageNumber); }}将总页数和当前页数发送给小程序

有时候会需要H5和小程序通讯,可以参考 这篇文章

总结

本文主要是针对微信小程序的 web-view 标签,在H5中使用 ifream 获取页数会有更简单的的方法, 例如可以尝试:

var iFrame = document.getElementById('iframe_id');if( iFrame.contentDocument){let currentPageNum = iFrame.contentDocument.getElementById('pageNumber').value;}//或者document.querySelector('iframe id').contentWindow.PDFViewerApplication.page;//或者window.PDFViewerApplication.pdfViewer.currentPageNumber

欢迎大家积极交流……

本文链接地址:https://www.jiuchutong.com/zhishi/274913.html 转载请保留说明!

上一篇:详解Linux系统中关机与重启相关命令的用法(linux系统的)

下一篇:Win11正开发新功能:可直接通过任务栏调整音量(win10开发工具在哪)

  • 苹果13mini怎么设置手写(苹果13mini怎么设置悬浮球)

    苹果13mini怎么设置手写(苹果13mini怎么设置悬浮球)

  • 飞行模式是什么意思可以接电话吗(苹果手机飞行模式是什么)

    飞行模式是什么意思可以接电话吗(苹果手机飞行模式是什么)

  • 抖音怎么看我给别人的评论(抖音怎么看我给别人送的礼物)

    抖音怎么看我给别人的评论(抖音怎么看我给别人送的礼物)

  • oppor17怎么关机的(oppor17怎么关机和开机)

    oppor17怎么关机的(oppor17怎么关机和开机)

  • 华为nova6语音唤醒词怎么改(华为nova6语音唤醒怎么显示要在安静环境下)

    华为nova6语音唤醒词怎么改(华为nova6语音唤醒怎么显示要在安静环境下)

  • 为什么蚂蚁森林的树变小了(为什么蚂蚁森林不显示克数)

    为什么蚂蚁森林的树变小了(为什么蚂蚁森林不显示克数)

  • qq怎么获得幸运字符标识(qq怎样获得幸运字符)

    qq怎么获得幸运字符标识(qq怎样获得幸运字符)

  • 手机录像总不停对焦(为什么手机录像总是自动停了)

    手机录像总不停对焦(为什么手机录像总是自动停了)

  • 三星s9发热严重怎么解决(三星s9发烫很严重怎么回事)

    三星s9发热严重怎么解决(三星s9发烫很严重怎么回事)

  • 美团会员季卡是多少个月(美团的季卡是几个月)

    美团会员季卡是多少个月(美团的季卡是几个月)

  • 什么软件可以给照片换背景(什么软件可以给手机发短信)

    什么软件可以给照片换背景(什么软件可以给手机发短信)

  • 怎样检测手机是否弯曲(怎样检测手机是不是新机)

    怎样检测手机是否弯曲(怎样检测手机是不是新机)

  • ipad pro 12.9一代和二代区别(ipad pro12.9一代充电功率)

    ipad pro 12.9一代和二代区别(ipad pro12.9一代充电功率)

  • word产品激活失败有什么影响(word2013产品激活失败)

    word产品激活失败有什么影响(word2013产品激活失败)

  • 换手机怎么保存微信聊天记录(换手机怎么保存电话号码)

    换手机怎么保存微信聊天记录(换手机怎么保存电话号码)

  • word2010文件选项卡包括(Word2010文件选项卡高级包括)

    word2010文件选项卡包括(Word2010文件选项卡高级包括)

  • 为什么airpods设置不了(airpods为什么不在设置里显示)

    为什么airpods设置不了(airpods为什么不在设置里显示)

  • 抖音被限赞了怎么办(抖音被限制点赞多久恢复正常)

    抖音被限赞了怎么办(抖音被限制点赞多久恢复正常)

  • word里怎么增加目录(Word里怎么增加空白页)

    word里怎么增加目录(Word里怎么增加空白页)

  • 荣耀20能不能插耳机(荣耀20能不能插u盘)

    荣耀20能不能插耳机(荣耀20能不能插u盘)

  • 手机能代替卡片相机吗(手机能代替卡片机吗)

    手机能代替卡片相机吗(手机能代替卡片机吗)

  • 换修无忧月付怎么付费(换修无忧取消自动续费)

    换修无忧月付怎么付费(换修无忧取消自动续费)

  • 红米note7用贴膜吗(红米note七钢化膜)

    红米note7用贴膜吗(红米note七钢化膜)

  • 苹果x换行键在哪(苹果x换行怎么打出来)

    苹果x换行键在哪(苹果x换行怎么打出来)

  • 解决vue中报错 Duplicate keys detected:‘1‘. This may cause an update error.(vue运行报错)

    解决vue中报错 Duplicate keys detected:‘1‘. This may cause an update error.(vue运行报错)

  • Pytorch中的grid_sample算子功能解析(pytorch中的数据类型)

    Pytorch中的grid_sample算子功能解析(pytorch中的数据类型)

  • 研发设备定义
  • 企业筹建期间契税账务处理
  • 企业注销企业所得税年报怎么申报
  • 公司租车要交什么费用
  • 所得税的利润总额怎么计算
  • 单位缴纳的社保在哪里查询
  • 个税手续费返还会计分录
  • 收到货款定金计入哪里
  • 公司拖欠工资还要继续工作吗?
  • 国企不交社保怎么办
  • 小微企业利润亏损原因
  • 全员劳动生产率是什么意思
  • 免征增值税的进项税额如何处理
  • 有限合伙人公司
  • 公司0转让要交哪些税
  • 开业庆典礼仪费计入什么科目?
  • 股权转让要交哪些费用
  • 退税应纳税所得额4万交税多少
  • 企业应纳税所得额计算公式
  • php正则匹配字符串
  • 进程控制块PCB不包括( )
  • win10专业版如何关闭系统更新
  • 税控机抵减增值税税额
  • 行政单位跨年度收到发票,补付尾款会计分录
  • win10通讯
  • 酒店损益类科目包括哪些
  • 销售机构人员工资属于管理费用吗
  • 库存商品损失怎么做账
  • iframe写法
  • element ui 左侧导航
  • 学习率设置
  • Blog2N如何计算
  • 购买金税盘的费用会计分录
  • 开票软件是什么名字
  • 预提财务费用
  • sql server 2008数据库
  • 帝国cms插件编写教程
  • 建筑企业营改增之前计税方法
  • 没有发票的福利支出如何入帐
  • 非同一控制下的长期股权投资入账价值
  • 税务企业类型分为哪几种
  • 出口企业申报退税不再提供纸质
  • 没进项发票的开销项发票多少税?
  • 国债利息收入计入什么会计科目
  • 货物已到发票未开具
  • 工会经费计入什么项目流量表
  • 生产企业免抵退是什么意思
  • 无形资产发生减值后怎么摊销
  • 小数点引起小数大小变化
  • 工程结算直接做主营业务成本
  • 支付设备款怎么做账
  • 同一个客户有应收也有应付怎么办
  • 金税盘税费减免分录
  • 不征税发票和零税率发票
  • 过路费属于差旅费还是办公费
  • 发票税率如何填写
  • 租用的办公室装修费用怎么入账
  • 商业承兑汇票和银行承兑汇票的区别
  • sql中出现将截断字符串或二进制
  • 详解MySQL的limit用法和分页查询语句的性能分析
  • win10怎么用xp经典主题
  • winxp启动
  • 远程桌面连接没反应
  • macos终端删除文件
  • unix含义
  • win7防病毒设置在哪
  • 各种linux系统比较
  • win7系统怎么创建虚拟网络
  • Tutorial 6:Translation Transformation
  • jquery模拟表单提交
  • bootstrap制作的网站页面
  • jquery添加节点
  • JavaScript中的this
  • js操作对象的方法
  • 哪个机场离东莞樟木头最近
  • 广东省电子税务局app下载手机版
  • 中国税务稽查官网
  • 农村摩托车上牌要什么证件和手续
  • 西安车辆购置税在线交费
  • 财产转让所得适用税率
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设