首页 > 其他分享 >uniapp 预览pdf app端使用自定义导航时铺满全屏,需要留出导航栏

uniapp 预览pdf app端使用自定义导航时铺满全屏,需要留出导航栏

时间:2023-10-25 11:49:13浏览次数:50  
标签:uniapp 自定义 预览 height let pdf uni 导航

1、安装pdf预览插件:hybrid 插件(网上资料很多)

 

2、封装预览vue页面(重点在加粗部分,使用原生导航没有问题,但是使用自定义导航就把状态栏全部盖住了)

<template>
    <view class="page">
        <web-view :webview-styles="webviewStyles" :src="src" ></web-view>
    </view>
</template>

<script>
    export default {
        name: 'ss-preview',
        props: {
            fileUrl: {
                type: String,
                default: ''
            },
            webType:{
                type: String,
                default: ''
            }
        },
        data() {
            return {
                webviewStyles: {
                    progress: {
                        color: '#FF3333'
                    }
                },
                src: '',
            };
        },
        mounted() {
            this.previewPdf(this.fileUrl)
        },
        created() {
        // #ifdef APP-PLUS
            // 争对需要预留顶部导航栏高度的操作
            if(this.webType == 'navbar_height'){
                let navbar_h = 0;// 导航栏高度
                let _height = 0; //定义动态的高度变量
                let statusbar = 0; // 动态状态栏高度
                uni.getSystemInfo({ // 获取当前设备的具体信息
                    success: (sysinfo) => {
                        navbar_h = sysinfo.platform === 'android' ? 48 : 44;
                        statusbar = sysinfo.statusBarHeight;
                        _height = sysinfo.windowHeight;
                    }
                });
                let currentWebview = this.$parent.$scope.$getAppWebview(); //获取当前web-view
                setTimeout(function() {
                    let wv = currentWebview.children()[0];
                    wv.setStyle({ //设置web-view距离顶部的距离以及自己的高度,单位为px
                        top: statusbar + navbar_h, //此处是距离顶部的高度,应该是你页面的头部
                        height: _height - statusbar
                    })
                }, 200);
            }
        // #endif    
        },
        methods: {
            //微信小程序预览文档,可预览.doc,.docx,.xls,.xlsx,.pdf等文件
            previewWechat(urlPdf) {
                uni.showLoading({
                    title: '正在加载中..'
                })
                uni.downloadFile({
                    url: urlPdf,
                    success: function(res) {
                        var filePath = res.tempFilePath;
                        uni.openDocument({
                            filePath: filePath,
                            showMenu: true,
                            success: function(res) {
                                console.log('打开文档成功');
                                uni.hideLoading()
                            },
                        });
                    },
                    complete: function(r) {
                        uni.hideLoading()
                    }
                });
            },
            //APP,H5预览文档图片和视频,微信小程序预览图片和视频
            previewPdf(value) {
                this.src = `/uni_modules/ss-preview/hybrid/html/pdf-reader/index.html?file=${encodeURIComponent(value)}`;        
            },
        },
    };
</script>

<style lang="scss" scoped>
    .page {
        height: 100%;

        .video-detail-page {
            width: 100%;

            uni-video {
                width: 100%;
            }

            video {
                width: 100%;
            }
        }
    }
</style>

3、页面使用

<!-- #ifdef APP-PLUS -->
      <ss-preview :webType="'navbar_height'" v-if="resource_type !== 'mp4'" :fileUrl="courseInfo.course.url"></ss-preview>
<!-- #endif -->

总结:使用封装后的webview组件app打开pdf可在当前页面预览,不会在三方平台打开,并且没有下载的弹框提示,完美符合需求!!!!!!

 

标签:uniapp,自定义,预览,height,let,pdf,uni,导航
From: https://www.cnblogs.com/LindaBlog/p/17786750.html

相关文章

  • 微信小程序--5. 如下图将顶部导航栏的地方改成自定义样式
    5.如下图将顶部导航栏的地方改成自定义样式1)配置app.json{"window":{"navigationStyle":"custom"//增加这行}} 2)、封装顶部导航栏的样式创建组件文件夹及文件miniprogram\components\navigation-bar\index//components/navigation-bar/index.wxml<!......
  • 基于mutation的自定义指令以监听用户使用f12修改dom
    昨天写了功能后,就又封了一个指令,可以直接应用于ui框架的input组件上贴贴:preventChange/index.jsexportconstpreventChange={inserted(el,binding){constelTag=el.tagName.toLowerCase();//获取当前dom下类型为password的input标签constpasswordI......
  • 微信小程序--顶部导航栏的高度偏差问题
    顶部导航栏的结构: 已知:获取系统信息:wx.getSystemInfoSync()获取胶囊信息:wx.getMenuButtonBoundingClientRect() wx.getSystemInfoSync().statusBarHeight;//状态栏高度 wx.getMenuButtonBoundingClientRect().height;//胶囊高度 (wx.getMenuButtonBoundingClientRec......
  • uniapp h5低版本Android显示空白
    前言:uniapp写的H5访问一直空白,打包app就可以正常显示,排查说是箭头函数低版本不支持,一顿操作npm,还是一样空白。最后:需要发行打包h5才能正常访问,服了也没告诉我啊。注:打包出来访问报错UncaughtSyntaxError:Unexpectedtoken'<',访问空白问题,在manifest.json文件中添加如图所示......
  • LambdaUpdateWrapper 自定义修改
    当我们想要在原有的数据上添加新的数据的时候,我们需要一个更新操作,但是<Iservice>接口一般是根据ID进行修改当我们需要根据指定的条件设置值时,就需要自己写SQL但是这个办法会出现SQL错误并且很麻烦所以我们可以自定义一个wrapper来进行修改。 这是全部的代码 这是我们要......
  • 【ChatGPT系列】Python自定义打印各种颜色的日志
    如何在控制台和文件中同时输出日志?要将日志同时输出到文件和控制台,可以创建并配置一个额外的StreamHandler,然后将其添加到Logger中。下面是一个示例代码,演示如何将日志同时输出到文件和控制台:importlogging#创建Logger对象logger=logging.getLogger("example_logger")......
  • Java:自定义实现SpringBoot Starter
    (目录)1、自定义Starter1.1、项目结构$tree.├──pom.xml└──src├──main│├──java││└──com││└──example││└──demo││├──ReadingConfiguration.java......
  • uniapp引入H5调试vConsole
    在真机环境下调试移动端H5的时候,无法像浏览器一样打开控制台进行console调试,那么我们可以在前端项目中引入vconsole,便于我们在真机环境下调试移动端H5项目vConsole是一个轻量、可拓展、针对手机网页的前端开发者调试面板。详细文档可查看:https://gitee.com/mirrors/vConsole/功......
  • uniapp项目引入uView-ui
    通过npm下载//如果您的根目录没有package.json文件的话,请先执行如下命令://npminit-ynpminstalluview-ui//更新//npmupdateuview-ui配置步骤1.引入uView主JS库在项目根目录中的main.js中,引入并使用uView的JS库,注意这两行要放在importVue之后。//main.j......
  • grafana 配置自定义dashboard
    本文为博主原创,转载请注明出处:1.配置数据源         配置完成后,点击SaveAndTest,如果配置正确,页面则显示如下:           2.配置dashboard          点击Addnewpanel后,界面如下:       ......