uniapp在线预览pdf功能(手机端Web端皆适配)

前言:

uniapp实现在页面当中预览pdf功能,无需跳转。手机端Web皆可完美适配。下文中父页面为需要用户点击预览pdf的页面,子页面为展示pdf的页面

下载及安装

pdfjs-4.0.379-dist 点击即可下载

  • 下载完成后在项目static文件夹中创建个pdf文件夹,将压缩包内容解压进去(注意!放置其他位置可能会出现不可预料的错误!!)

使用

子页面(用于展示pdf页面)

  • page中创建个vue页面,用于跳转展示pdf,代码如下。(pdfView.vue文件
<template>
	<view>
		<web-view :src="allUrl"></web-view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				allUrl:'',
				viewerUrl:'/static/pdf/web/viewer.html',//刚解压的文件地址,用来渲染PDF的html
			}
		},
		methods: {
			
		},
		onLoad(option) {
			this.allUrl = this.viewerUrl + '?file=' + option.id//将插件地址与接收的文件地址拼接起来
		}
	}
</script>

<style>

</style>

父页面(例如有个按钮,点击即可跳转pdf预览页面)

在需要点击预览pdf的vue页面当中使用uni.navigateTo跳转到pdfView.vue页面即可。(记得参数要携带pdf文件的地址!)

  • 如若是本地pdf文件,直接传入本地文件地址即可
//点击事件,点击跳转pdfView.vue页面并打开pdf文件
openPdfView(){  
    let url='/static/pdf/web/测试文档.pdf'//本地放的一个pdf文件
    uni.navigateTo({
		url:/pages/pdfView/pdfView?id="+url,
	})
		
},

  • 如若pdf需要网上获取,则需要先下载为本地临时文件,再将本地文件地址进行传参。
openDeviceText(){

   //uniapp官方的下载api
   uni.downloadFile({
        //需要预览的文件地址
		url: 'http://192.168.1.134:8011/upload/测试文件.pdf', 
		success: (res) => {
			if (res.statusCode === 200) {
                //下载成功,得到文件临时地址
				console.log('下载成功',res.tempFilePath);
				
                //条件编译,若为h5端则直接赋值文件地址			
				// #ifdef H5
				let url = res.tempFilePath
				// #endif
				
                //条件编译,若为App端,则需要将本地文件系统URL转换为平台绝对路径	!!		
				// #ifdef APP-PLUS
				let url = plus.io.convertLocalFileSystemURL(res.tempFilePath)
				// #endif
							
							
				//跳转到pdfView并预览pdf文档。
				uni.navigateTo({
					url:"/pages/pdfView/pdfView?id="+url,
			    })
		   }
		}
    });
},

注意!!不能运行看这

  1. 网络地址尽量不要直接使用,可能会产生跨域等问题,最好下载为本地临时文件获得路径后使用。
  2. 重要!!手机端无法预览文件请看上图的条件编译(若为APP端),要使用地址转化才可以。(手机端通过下载方式获取pdf地址必须通过地址转换转换为绝对路径!)
  3. 本教程只适用于Pdf文件,不可用于浏览图片,word等文件。
  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
Uniapp是一种基于Vue.js框架的跨平台开发工具,可以实现一次编写多运行的效果。对于适配PC的问题,Uniapp也同样提供了相应的解决方案。 首先,使用Uniapp开发CSDN的PC可以通过修改视图布局和样式来实现适配Uniapp的Vue组件系统提供了丰富的布局组件和样式配置选项,开发者可以根据PC的需求进行灵活设置。通过设置合适的布局容器、使用Grid系统来进行自适应排版,以及设置响应式样式来适配不同屏幕尺寸,可以使CSDN在PC的呈现更加友好和美观。 其次,Uniapp还提供了针对不同平台的API扩展,可以通过调用相关API来实现与PC的交互。例如,监听浏览器窗口尺寸变化事件,动态更新页面布局;使用LocalStorage或SessionStorage等Web相关API来存储和读取数据;调用浏览器的打印功能来实现页面打印等。这些API的使用可以使得Uniapp开发的CSDN在PC拥有更多与Web交互的特性和功能。 此外,Uniapp还支持打包为Electron应用,将移动应用打包成桌面应用,可以更好地适配PC。通过Electron提供的功能,可以实现跨平台桌面应用的窗口管理、菜单栏设置、快捷键设置等。这样一来,CSDN作为Electron应用在PC适配能力进一步增强,用户可以在电脑上获得更好的使用体验。 综上所述,利用Uniapp的布局和样式配置、跨平台API扩展以及Electron打包等特性,可以实现CSDN在PC适配,给用户带来更好的使用体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值