uniapp开发app在当前页面预览pdf文件

试了很多方法,在插件市场上也找了很多插件,pdf可以显示出来,但都是铺满了整个屏幕,没有放到我指定的容器里面去,使用webview也是一整个页面,搞了几天,看了uniapp官方文档,终于解决,我是使用了此种方法

App端web-view的扩展

App端的webview是非常强大的,可以更灵活的控制和拥有更丰富的API。

每个vue页面,其实都是一个webview,而vue页面里的web-view组件,其实是webview里的一个子webview。这个子webview被append到父webview上。

通过以下方法,可以获得这个web-view组件对应的js对象,然后参考HTML5+ API Reference,可以进一步重设这个web-view组件的样式,比如调整大小

官方代码

<template>
	<view>
	</view>
</template>
<script>
var wv;//计划创建的webview
export default {
	onLoad() {
		// #ifdef APP-PLUS
		wv = plus.webview.create("","custom-webview",{
			plusrequire:"none", //禁止远程网页使用plus的API,有些使用mui制作的网页可能会监听plus.key,造成关闭页面混乱,可以通过这种方式禁止
      'uni-app': 'none', //不加载uni-app渲染层框架,避免样式冲突
			top:uni.getSystemInfoSync().statusBarHeight+44 //放置在titleNView下方。如果还想在webview上方加个地址栏的什么的,可以继续降低TOP值
		})
		wv.loadURL("https://www.baidu.com")
		var currentWebview = this.$scope.$getAppWebview(); //此对象相当于html5plus里的plus.webview.currentWebview()。在uni-app里vue页面直接使用plus.webview.currentWebview()无效
		currentWebview.append(wv);//一定要append到当前的页面里!!!才能跟随当前页面一起做动画,一起关闭
		setTimeout(function() {
			console.log(wv.getStyle())
		}, 1000);//如果是首页的onload调用时需要延时一下,二级页面无需延时,可直接获取
		// #endif
	}
};
</script>

我借助了在线PDF播放器预览 - DCloud 插件市场这个插件里的js文件

	viewerUrl: '/static/hybrid/html/web/viewer.html',
	pdfUrl:'' //pdf文件

  //创建
   wv = plus.webview.create("", "custom-webview", {
	 plusrequire: "none",
	 'uni-app': 'none',
	 right: 20,
	 top: 130,
	 height: 400,
	 width: 720,
    })
    this.purl = `${this.viewerUrl}?file=${encodeURIComponent(this.pdfUrl)}`;
	wv.loadURL(this.purl)
	var currentWebview = this.$scope.$getAppWebview();
	currentWebview.append(wv);

 //隐藏
    wv.hide();
 //显示
    wv.show()
 //销毁
    wv.close();
	wv = null;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值