UNI-APP APP中实现 PDF 文件预览功能(02)

本文介绍了如何通过模块化代码实现更好的可读性和维护性,加入错误处理机制保证程序稳定,并优化PDF预览界面以提升用户体验。使用Vue的WebView组件加载PDF文件,同时展示了封装网络请求和错误处理的示例代码。
摘要由CSDN通过智能技术生成
  1. 模块化代码: 将相关功能模块化,使代码更易读和易于维护。
  2. 错误处理: 在网络请求和文件下载过程中添加错误处理机制,以确保程序的稳定性。
  3. 优化界面体验: 考虑优化 PDF 预览界面的交互和展示效果,以提升用户体验。

在程序中写一个pdf界面用于跳转,放入如下代码

<web-view :src="weburl" @onPostMessage="handlePostMessage" v-show="weburl"></web-view> 

通过 WebView 来加载 PDF 文件

// 将网络请求和处理逻辑封装为一个函数
async function fetchPDFData(id) {
    try {
        const response = await this.$http.post('/szSchool/queryList', {
            pageNum: 1,
            pageSize: 10,
            obj: { id: id, status: 1 }
        });
        const data = response.data.list[0];
        uni.setNavigationBarTitle({ title: data.title });
        return data.url;
    } catch (error) {
        console.error('请求数据失败:', error);
        throw new Error('请求数据失败');
    }
}

// 在页面加载时调用获取 PDF 数据的函数
onLoad(e) {
    this.getPDFUrl(e.id);
},
methods: {
    async getPDFUrl(id) {
        try {
            const pdfUrl = await fetchPDFData(id);
            this.weburl = 'http://yourserver.com/pdf/pdf.html?url=' + pdfUrl;
        } catch (error) {
            this.weburl = ''; // 清空 weburl,可以显示出错信息或者隐藏 WebView
            this.showToast('获取 PDF 数据失败');
        }
    },
    handlePostMessage(e) {
        let data = e.detail.data;
        console.log(JSON.stringify(data));
    },
    showToast(message) {
        // 显示 Toast 消息
        // this.$http.Toast(message);
    }
}

我将网络请求和处理逻辑封装成了一个 fetchPDFData 函数,并且在页面加载时调用该函数来获取 PDF 的 URL,然后将 URL 替换到 WebView 的 weburl 中。同时,增加了错误处理机制和显示 Toast 消息的方法。(下载网盘上的文件(本文最下方),然后部署在自己的服务器上,将weburl上的ip替换成自己部署的ip)

链接: https://pan.baidu.com/s/1mPgRvLHl6Jyanx-Jq6UeAw 复制这段内容后打开百度网盘手机App,操作更方便哦。

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码海扬帆:前端探索之旅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值