小程序打开pdf,有3种方式

1、webview打开,这里不做赘述

2、文档二进制流打开,参考其他文章

3、今天的重点,wx.downloadFile,wx.openDocument

操作过程中遇到的一些坑,首先是我用网上常规的操作wx.downloadFile,wx.openDocument,开发工具显示正常,真机可能会走到‘打开文档失败’;真机调试发现是 filePath= wx.env.USER_DATA_PATH + '/' + ‘xxx.pdf’,报错没有修改名字的权限,如图二:

又或出现这种bug,打开文档后,再次打开其他pdf文档,显示的还是第一次打开的pdf文件,也就是说打开的是最先缓存过的文件,这个缓存机制自己下去研究。

if (that.data.pdfSrc1) {wx.showLoading({title: 'pdf预览准备中',})wx.downloadFile({url: that.data.pdfSrc1,//pdf链接success(res) {let  filePath= wx.env.USER_DATA_PATH + '/' + '报告详情.pdf';wx.openDocument({filePath: filePath,success: function (res) {wx.showToast({title: '打开文档成功',})wx.hideLoading()},fail: function (res) {wx.showToast({title: '打开文档失败',})},})},})
}

解决方案:使用 wx.saveFile 微信保存文件临时存储路径,再使用官方的wx.env.USER_DATA_PATH修改本地路径名称,至此,解决显示问题、缓存问题以及名字修改问题

wx.downloadFile({url: that.data.pdfSrc1,//pdf链接success(res) {wx.saveFile({ //重点 wx.saveFile一定要有   避免文件存储找不到  然后打开失败tempFilePath: res.tempFilePath,filePath: wx.env.USER_DATA_PATH + '/' + '报告详情.pdf',success(res) {wx.openDocument({filePath: res.savedFilePath,fileType: "pdf",showMenu: true,success: function (res) {wx.showToast({title: '打开文档成功',})wx.hideLoading()},fail: function (res) {wx.showToast({title: '打开文档失败',})},})}}) },
})

补充个二进制流的方案  需要后台配合写个解析接口

  wx.request({url: 'http:/XXXXX/downloadReport.cs?id='+ obj.id,method: 'POST',header: {"content-type": "application/json",},responseType: "arraybuffer", //注意这里的responseTypesuccess: (result) => {console.log("下载成功!", result);var fileManager = wx.getFileSystemManager();var FilePath =  wx.env.USER_DATA_PATH + '/' + '报告详情1111'+'.pdf';//这里同样可能有问题  我这个打开后显示文档损坏   参考上面的方案解决  fileManager.writeFile({data: result.data,filePath: FilePath, showMenu: true, // 显示右上角菜单encoding: "binary", //编码方式 success: res => {console.log('编码格式');wx.openDocument({ //成功之后直接打开filePath: FilePath, showMenu:true,fileType: "pdf",success: result => {console.log("打开文档成功");},fail: err => {console.log("打开文档失败", err);}});},fail: res => {wx.showToast({title: '导出失败!',icon: 'none',duration: 2000,})console.log(res);}})},fail(err) {console.log(err)}})

小程序下载预览pdf,文档打不开解决方案相关推荐

  1. 计算机无法快速预览pdf,电脑中无法使用火狐浏览器预览PDF文档怎么解决

    ‍ 在火狐浏览器中具有在网页中支持打开PDF文档的功能.有用户在使用Firefox打开PDF文档时却被提示需要保存文件,而不能直接在页面中预览.如果遇到上述的情况,我们应该如何操作才能在火狐浏览器中直 ...

  2. 渲染预览PDF文档,轻松搞定,这方案真香!

    渲染预览PDF文档,轻松搞定,这方案真香! 1.前言 2.列举一些文档预览解决方案: 3.列举一些文档解析生成解决方案: 4.案列赏析 5.准备工作: 6.模板讲解: 7.代码实现: 8.效果图: 9 ...

  3. 加载js文件,在线预览pdf文档

    加载js文件,在线预览pdf文档 效果演示 环境要求 JS文件下载 Jsp页面导入js文件 jquery.media.js源码 效果演示 首先,先展示效果图 环境要求 Tomcat8.5 [注意]:T ...

  4. uni-app移动端-H5-微信小程序在线预览pdf,图片,视频

    封装了一个插件,可直接导入hbuilderx查看使用: 插件地址:uni-app移动端-H5-微信小程序在线预览pdf,图片,视频 <template><view class=&qu ...

  5. 记录一次微信小程序实现预览pdf

    微信小程序预览pdf需要注意的是,在安卓端和ios端是有差异的. 安卓端不能用web-view直接打开,需要先下载到本地,再打开文件进行预览. 网上说的ios端可以直接用web-view进行预览,但是 ...

  6. 使用pdf.js在移动端预览pdf文档

    pdf.js 是一个技术原型主要用于在 HTML5 平台上展示 PDF 文档,无需任何本地技术支持. 在线演示地址:http://mozilla.github.com/pdf.js/web/viewe ...

  7. 安卓手机如何在线预览PDF文档

    需要当我们上传到服务器上一个PDF文档发,在苹果手机和网页上都能正常的打开,但是一到安卓手机上就会出现下面的问题. 还得需要我们下载查看,无法在线查看,就我这个臭脾气再重要的文件我也不回去下载查看的. ...

  8. vue调用手机浏览器打开pdf_vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法...

    目前大多数PC浏览器支持在线预览pdf文件,但大多数手机浏览器还未支持,尝试用手机浏览器打开一个pdf文件会弹出是否下载的提示框.网上查了一些资料,在实现的过程中,还是走了比较多的弯路,最后采用了备受 ...

  9. UNIAPP在线预览PDF文档DCloud插件

    UniApp 在线预览PDF&插件使用 该实现方式基于pdf.js,使用网页嵌套web-view标签. 插件优点:内容懒加载,可自行决定工具栏内容,@message能监听用户操作,支持H5.安 ...

最新文章

  1. Python3通过汉字输出拼音
  2. 禁止冒名顶替Exchange用户发送邮件
  3. 【网络安全】ollvm反混淆学习
  4. sklearn处理文本和分类属性的方式
  5. 足球预测_预测足球热
  6. 2.5d generator 2.0_ps插件【2.5D插件】
  7. HttpReqeust对象
  8. Oracle 20c 新特性:DIAGNOSTICS_CONTROL 对诊断事件的安全管控
  9. linux进入vi编辑报错,Linux Vi编辑器的使用及C编程
  10. UVA12771 LA6528 Disjoint water supply【并查集+DAG】
  11. mysql on 子句_ON子句中的MySQL未知列
  12. 阶段3 2.Spring_10.Spring中事务控制_9 spring编程式事务控制1-了解
  13. 西数完善黑盘系列 3TB黑盘终面市
  14. 新西兰留学再移民,哪些专业好就业?
  15. [java/初学者] 猜测随机数字的大小
  16. Kademlia详解
  17. C#图形界面汉诺塔Hanoi
  18. 旧约圣经对基督(弥赛亚)的预言
  19. 【数学】三角函数小题
  20. 数据库常用函数-基础

热门文章

  1. java中遍历数组的三种操作
  2. gradle构建乱码_2019-07-14解决gradle中文乱码
  3. 苹果迫不及待拥抱5G网络 已向FCC申请测试
  4. YOLOv5/v7 更换骨干网络之 GhostNet
  5. INOBITEC PRO DICOM VIEWER 2.9.0 Crack
  6. 并发编程-wait和sleep
  7. 利用摄像机如何获取物体的深度信息
  8. pdf转ppt简单方法
  9. vuex-pathify入门
  10. 纠结了一晚上的问题---点击导航栏的一个文本链接后所有导航栏文本链接颜色都变成访问过的颜色了