两种方法打开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会打开两遍,一个是小程序内部的一个是手机浏览器的,解决方法还未找到