两种方法打开PDF,一种是:https://mp.csdn.net/editor/html/112879763,用到的方法是安卓使用官方api:downloadFile 和 openDocument,iOS使用web-view,这种方式打开的文件名是乱码,并且只打开一次

另一种是本文:https://mp.csdn.net/editor/html/113371631  用到的方法是都使用官方提供的api打开,这种方式打开的文件名是可以自定义的,但是安卓会打开两次

 

 

打开PDF用的是wx.downloadFile下载了PDF文件,成功后保存到了本地,然后返回了本地的PDF路径给了wx.openDocument,这才打开的PDF文件

所以在此,官方文档中downloadFIle方法还有一个参数,filePath

所以我们可以是先定义好要存储的路径,包括重命名文件名,然后使用openDocument方法就行了,

//filename是中文文件名,encodename是中文名字的转码(纯英文)
getInfo(filename, encodename) {
		const name = filename + '.pdf'
		const newPath = `${wx.env.USER_DATA_PATH}/${name}`
		wx.downloadFile({
			url:
				this.data.baseUrl + '/report/getFileContext?encodeName=' + encodename,
			filePath: newPath,

			complete: (res) => {
				console.log(res)
				if (res.errMsg == 'downloadFile:ok') {
					// let data = res.tempFilePath
					// let data = res.filePath
					setTimeout(() => {
						wx.openDocument({
							filePath: newPath,
							// showMenu: true,
							// fileType: 'pdf',
							success: (res) => {
								console.log('1111')
								console.log('打开文档成功')
								this.setData({
									loadingVis: false,
								})
							},
							fail(err) {
								console.log(err)
								this.setData({
									loadingVis: false,
								})
							},
						})
					}, 1000)
				} else {
					this.setData({
						loadingVis: false,
					})
				}
			},
		})
	},

但是这里会出现一个问题,安卓打开PDF会打开两遍,一个是小程序内部的一个是手机浏览器的,解决方法还未找到

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐