更新记录
1.2(2026-07-19)
- 支持多平台 PDF 预览 APP (Android,iOS,Harmony OS),小程序,H5
- APP端支持线上 PDF 文件
- 优化阅读完成检测(滚动到最后一页)
- 实现倒计时阅读功能
- 兼容 Vue2 和 Vue3
平台兼容性
uni-app(4.55)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | - | √ | √ | √ |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| √ | - | - | - | - | - | - | - | - | - | - | - |
uni-app x(4.55)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ |
PDF合同阅读预览组件
简介
PDF合同阅读预览组件,基于pdfh5实现,兼容APP、小程序和H5平台。主要用于隐私协议、合同类PDF文件的预览,支持阅读到最后一页回调和倒计时阅读完成回调。
功能特性
- ✅ 跨平台兼容:支持H5、APP、微信小程序
- ✅ 阅读完成回调:阅读到PDF最后一页时触发回调事件
- ✅ 倒计时阅读:支持设置阅读时间,计时完成触发回调事件
- ✅ 按钮状态联动:可配置需同时满足阅读到最后一页和计时完成才能启用按钮
- ✅ 支持自定义样式:可自定义底部按钮样式
平台兼容性
| 平台 | 支持情况 |
|---|---|
| H5 | ✅ |
| App Android | ✅ |
| App iOS | ✅ |
| 微信小程序 | ✅ |
安装方式
组件已集成在uni_modules中,无需额外安装。
使用方式
基础用法
<template>
<view class="content">
<u-pdf
:url="pdfUrl"
:show-timer="true"
:read-timer="20"
@on-reach-last-page="handleReachLastPage"
@on-timer-complete="handleTimerComplete"
@on-click-reader="handleClickReader"
></u-pdf>
</view>
</template>
<script>
export default {
data() {
return {
pdfUrl: "/static/test.pdf"
}
},
methods: {
handleReachLastPage(data) {
console.log('已阅读到最后一页', data);
},
handleTimerComplete(data) {
console.log('阅读计时完成', data);
},
handleClickReader() {
console.log('用户点击了"我已阅读"按钮');
}
}
}
</script>
自动引入
uni_modules组件支持自动引入,无需import,直接在template中使用即可:
<template>
<u-pdf :url="pdfUrl" :show-timer="true"></u-pdf>
</template>
属性说明
| 属性名 | 类型 | 默认值 | 必填 | 说明 |
|---|---|---|---|---|
| url | String | - | 是 | PDF文件地址 |
| viewHeight | String | 100% | 否 | 预览区域高度 |
| showBottom | Boolean | true | 否 | 是否显示底部按钮区域 |
| showTimer | Boolean | false | 否 | 是否显示倒计时 |
| readTimer | Number | 20 | 否 | 倒计时秒数 |
| disabled | Boolean | true | 否 | 按钮初始禁用状态 |
| needReadAllPage | Boolean | true | 否 | 是否需要阅读到最后一页才能启用按钮 |
| btnStyle | Object | {} | 否 | 按钮自定义样式 |
| options | Object | - | 否 | pdfh5配置选项 |
options配置项
{
cMapUrl: "https://unpkg.com/pdfjs-dist@3.8.162/cmaps/",
lazy: false,
withCredentials: true,
renderType: "svg",
maxZoom: 3,
scrollEnable: true,
zoomEnable: true
}
事件说明
| 事件名 | 触发时机 | 参数 |
|---|---|---|
| onReachLastPage | 用户滚动到PDF最后一页时 | { totalPages } |
| onTimerComplete | 倒计时完成时 | { readTimer } |
| onClickReader | 用户点击"我已阅读"按钮时 | 无 |
| ready | PDF准备就绪 | totalPages |
| complete | PDF加载完成 | { status, msg, totalPages, time } |
| scroll | PDF滚动时 | { scrollTop, currentNum, totalPages } |
| pagechange | 页码变化时 | { currentNum, totalNum } |
核心逻辑
-
阅读完成检测:通过监听PDF的scroll和pagechange事件,当当前页码达到总页数时触发
onReachLastPage回调 -
倒计时完成检测:组件挂载时启动倒计时,计时结束时触发
onTimerComplete回调 -
按钮状态联动:根据
needReadAllPage配置,按钮需满足以下条件才可用:needReadAllPage=true:必须同时满足阅读到最后一页 AND 倒计时完成needReadAllPage=false:只需满足倒计时完成
注意事项
- 组件已内置pdfh5依赖,无需额外安装node_modules
- 小程序端需要配置downloadFile域名白名单
- PDF文件较大时建议使用网络地址或优化加载方式
更新日志
v1.0.0
- 初始版本
- 支持阅读到最后一页回调
- 支持倒计时阅读完成回调
- 支持按钮状态联动

收藏人数:
购买普通授权版(
试用
赞赏(0)
下载 794
赞赏 1
下载 12440709
赞赏 1934
赞赏
京公网安备:11010802035340号