在开发中有个功能是查看pdf格式的报告,接口返回的链接是以“.pdf "结尾的,查询并实践了一下,在此记录。
方法一:使用微信提供的API先下载文件后展示
wx.downloadFile()参考文档:DownloadTask | 微信开放文档
wx.openDocument()参考文档:DownloadTask | 微信开放文档
需要注意:下载的地址需要配置到下载文件的白名单中,打开文档类型要指定pdf。根据别人查询反馈,在iOS系统中会出现打开文档是API调用成功,但是没有正常显示的情况
wx.downloadFile({
url,
success(res) {
// console.log("res", res);
if (res.statusCode === 200) {
wx.openDocument({
filePath: res.tempFilePath,
fileType: "pdf",
});
}
},
fail(err) {
// console.log("err", err);
},
complete() {
wx.hideLoading();
},
});
方法二:通过web-view直接加载
需要注意:在实践中发现这个方法在安卓系统的小程序中无法打开,iOS系统是可以正常使用的
<web-view src="xxx.pdf"></web-view>
基于以上两种情况。我在开发过程中根据设备的系统坐了区分,安卓的通过方法一展示,其他情况通过web-view展示。获取设备平台方法可使用wx.getDeviceInfo()的platform熟悉。参考文档:Object wx.getDeviceInfo() | 微信开放文档
方法三:使用pdf.js等三方工具
这个方法我没有尝试,在查的时候有提到,我理解就是写一个H5页面,这个页面引入pdf.js,利用API展示PDF文件,再将这个写好的H5通过web-view嵌入到小程序中,后续有时间实践成功再来记录。或者有尝试成功的小伙伴可以来分享一下。
最后还有说通过第三方服务将PDF转换成图片或者H5,再通过web-view加载转换后的内容,没有尝试,效果还未可知。