当前位置: 首页 > article >正文

H5移动端预览PDF方法

新建页面

新建一个页面以便去预览对应的pdf

新建完后在 pages.json 文件内去新增对应路由

页面内容

<template>
	<view class="page">
		<view class="pdf">
			<view id="demo"></view>
		</view>
		<view class="backPage" @click="goBack">
			<uni-icons type="back" size="30"></uni-icons>
		</view>
	</view>
</template>

<script>
import Pdfh5 from "pdfh5"
import "pdfh5/css/pdfh5.css";
export default {
	data() {
		return {
			src: '',
			pdfh5: null
		}
	},
	onLoad(option) {
		this.src = option.url
		this.getDataInfo(option.url)
		uni.setNavigationBarTitle({title: '报告详情',});
	},
	methods:{
		getDataInfo(url){
			this.$nextTick(()=>{
				this.pdfh5 = new Pdfh5('#demo', {
					pdfurl: url ,
					lazy: true, // 是否懒加载,默认false
					renderType: 'canvas', // canvas、svg,默认canvas
					maxZoom: 3, // 手势缩放最大倍数,默认3
					scrollEnable: true, // 是否允许pdf滚动,默认true
					zoomEnable: true,// 是否允许pdf手势缩放,默认true
					limit: 0, // 限制pdf加载最大页数,默认0不限制
					goto: 0,
					// 设置每一页pdf上的水印
					// logo: { src: require("@/assets/images/icon27.png"), x: 20, y: 70, width: 60, height: 60 },
				});
				console.log('pdfh5', this.pdfh5)
				// 监听pdf准备开始渲染,此时可以拿到pdf总页数
				this.pdfh5.on('ready', function(totalNum) {
					console.log('总页数:' + totalNum);
				});
				// 监听pdf加载完成事件,加载失败、渲染成功都会触发
				this.pdfh5.on('complete', (status, msg, time) => {
					console.log('状态:' + status + ',信息:' + msg + ',耗时:' + time + '毫秒');
				})
			})
		},
		goBack() {
			this.$tab.navigateBack();
		},
	}
}
</script>

<style scoped lang="less">
	.pdf {
		padding-bottom: 120rpx;
	}
	
	.backPage {
		background-color: #fff;
		border-radius: 50%;
		width: 80rpx;
		height: 80rpx;
		
		position: fixed; /* 固定定位 */  
		bottom: 200rpx; /* 紧贴底部 */  
		right: 30rpx; /* 紧贴右侧 */  

		text-align: center; /* 文字居中 */  
		line-height: 80rpx; /* 行高,使文字垂直居中 */  
		box-shadow: 0 0 10rpx rgba(0, 0, 0, 0.3); /* 阴影效果 */  
		z-index: 1000; /* 确保盒子在其他内容之上 */ 
	}
</style>

在页面内,我的url是通过路由跳转时携带的

this.$tab.navigateTo("/pages/preview/preview?url=xxx"

把对应的url给 pdfurl 组件会去自动渲染


http://www.kler.cn/a/390847.html

相关文章:

  • 11张思维导图带你快速学习java
  • JQuery封装的ajax
  • 用vscode编写verilog时,如何有信号定义提示、信号定义跳转(go to definition)、模块跳转这些功能
  • 【VBA实战】用Excel制作排序算法动画续
  • 操作系统离散存储练习题
  • OpenGL【C++】台灯
  • leetcode61:旋转链表
  • DolphinDB 与南方科技大学联合授课啦!
  • LeetCode 457.环形数组是否存在循环
  • 学习python的第八天之数据类型——list列表
  • 《青牛科技GC6150:摇头机驱动芯片的卓越替代品,超越 TMI8150》
  • 设计模式-七个基本原则之一-单一职责原则 + SpringBoot案例
  • ubuntu22.04 安装FFmpeg,并进行视频的转化格式和裁剪
  • 信创替代步入快车道|暴雨助力实现信创替代目标
  • ArkTS的进阶语法-1(泛型,工具类型,空安全)
  • 基于Cocos Creator开发的打砖块游戏
  • 基于STM32的智能家居安防系统设计
  • 【Transformer】模型输出模块处理
  • 快手,抖音IP属地怎么更改?快手抖音更改IP属地教程
  • 微服务链路追踪skywalking安装
  • 使用Matlab建立随机森林
  • 1.存储引擎:深入解析 MySQL 存储引擎与 InnoDB 文件结构
  • 【Django进阶】django-rest-framework中文文档——快速入门
  • Anaconda安装库
  • phpcms-tree(PHP无限级别分类)
  • Kafka-Eagle的配置——kafka可视化界面