控制台出现提示:

从接口拿到的文件流:

1.响应头:

2.请求头:

原因:
接收到文件流后,格式不对导致pdf.js无法浏览。

解决方案:
收到文件流后,使用响应的数据创建一个 blob,然后使用该 blob 创建一个 url。

 const blob = new Blob([data], {type: 'application/pdf'})// data为文件流数据let url = window.URL.createObjectURL(blob)

我的代码案例:

src/utils/request.js

import axios from 'axios'
import { getToken } from '@/utils/auth'
import { Notification, MessageBox, Message, Loading } from 'element-ui'
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
// 创建axios实例
const service = axios.create({// axios中请求配置有baseURL选项,表示请求URL公共部分baseURL:window.prod_config.BASE_URL,// 超时timeout: 10000
})// request拦截器
service.interceptors.request.use(config => {// 是否需要设置 tokenconst isToken = (config.headers || {}).isToken === falseif (getToken() && !isToken) {config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改}// get请求映射params参数if (config.method === 'get' && config.params) {let url = config.url + '?' + tansParams(config.params);url = url.slice(0, -1);config.params = {};config.url = url;}return config
}, error => {console.log(error)Promise.reject(error)
})
let isReFreshPadding=true
// 响应拦截器
service.interceptors.response.use(res => {// 未设置状态码则默认成功状态const code = res.data.code || 200;// 获取错误信息const msg = errorCode[code] || res.data.msg || errorCode['default']// 二进制数据则直接返回if(res.request.responseType ===  'blob' || res.request.responseType ===  'arraybuffer'){return res.data}if (code !== 200) {Notification.error({title: msg})return Promise.reject('error')} else {return res.data}},error => {console.log('err' + error)let { message } = error;if (message == "Network Error") {message = "后端接口连接异常";}Message({message: message,type: 'error',duration: 5 * 1000})return Promise.reject(error)}
)
// 获取文件流
export function downStream(url,params) {return service.get(url, {responseType: 'blob'}).then(res => {return res}).catch((r) => {console.error(r)})
}export default service

src/api/user/userApi.js

import { downStream } from '@/utils/request'
// 预览文件
export function previewFile(id) {return downStream('/order/printUser/printFile/preview/' + id)
}

user.vue

<script>import {previewFile
} from '@/api/user/userApi'
    // 预览pdf文件pdfDlg(fileId){previewFile(fileId).then((response) => {const blob = new Blob([response], {type: 'application/pdf'})this.src = window.URL.createObjectURL(blob)this.pdfDialogVisible = true}).catch(err => {console.log('err:', err)})},

pdf.js出现bug:Warning: Invalid stream: “FormatError: Bad FCHECK in flate stream: 120, 239“相关推荐

  1. 使用 pdf.js 查看发票时,显示不了台头和印章的解决办法

    系统中使用了 pdf.js 来查看 PDF 文件,发现在查看 电子发票时, 缺失了很多信息, 刚开始以为是 PDF.JS 的 BUG, 后来调试发现只需要在 IIS 里添加一个 bcmap 后缀的 m ...

  2. rosweb,roslib:bug汇总。报Warning: Invalid argument “/map“ passed to canTransform

    1.bug1 rosweb加载地图到画布中,双击地图控制台报: Warning: Invalid argument "/map" passed to canTransform ar ...

  3. pdf.js 实现阅读pdf文件

    pdf.js跨域读取文件pdf文件 1.pdf.js获取文件的方法 You can modify the defaultUrl app option in the web/app_options.js ...

  4. 手机端html5展示pdf,pdf.js移动端展示预览打开pdf-pdfh5.js

    pdf.js移动端展示预览打开pdf-pdfh5.js 本插件基于pdf.js和jQuery,可手势捏合缩放,支持懒加载(即分段加载). 2019.07.18更新:增加npm install pdfh ...

  5. fis3+vue+pdf.js制作预览PDF文件或其他

    人生第一篇博客,的确有点紧张,但有些许兴奋,因为这对于我来说应该是一个好的开始,以此励志在技术的道路上越走越远. 看过了多多少少的技术博客,给自己带来了很多技术上的收获,也因此在想什么时候自己也可以赠 ...

  6. 钉钉应用开发,提示Warning: Invalid CERT Authority

    我司的网页应用与钉钉进行了单点登录的对接,结果在钉钉App中打开提示SSL error,顶上的提示是Warning: invalid CERT Authority. 点击Yes可以正常访问,只是每次提 ...

  7. vue使用pdf.js实现移动端在线PDF文件预览

    背景 产品需求涉及到动态的PDF展示,PDF是由后端去生成的,然后下发给前端在线的cdn地址,H5需要实现在线PDF预览的能力 方案 H5展示合同PDF,有很多实现方式.但是通过尝试后发现在不同操作系 ...

  8. web3.js使用bug汇总及解决方法

    web3.js使用过程中各类bug汇总:More than one instance of bitcore-lib found;BigNumber Error;gasLimit无法解析而报错;js合约 ...

  9. pdf.js 库的使用

    这里写自定义目录标题 1. pdf.js 库的使用 1.1. 什么是 pdf.js 1.2. 在网页上显示 pdf 文件(使用 pdf.js) 1.2.1. 下载 1.2.2. 网页上显示 pdf 文 ...

最新文章

  1. 下列不可以判断网页是否正常打开的是_打开视频卡、无法加载原因查找
  2. python中bs4_python bs4库
  3. java后台http请求完成之后怎么setcookie_关于HTTP的那些事和cookie
  4. PHP中header的用法
  5. Visual Studio 2017 的重大功能回顾和针对 .NET 开发者的更新
  6. Asp.Net Core多榜逆袭,这是.NET最好的时代!
  7. 并发编程之多线程线程安全(下)
  8. 软件测试——测试分类
  9. Go 1.5交叉编译
  10. AQS之ReenReadWriteLock
  11. C语言中的找特殊数字问题
  12. 海外游戏广告投放渠道
  13. php imagejpeg函数,php imagepng()函数有什么用?
  14. python 监控手机屏幕_Python 让手机实现监控功能的办法,解决一些困扰一些人很久的比如偷情的信任问题...
  15. android 获取sd卡目录失败_Android获取外置SD卡存储路径的方法
  16. 你会用“お”和“ご”吗?
  17. ecshop mysql 标题表_ECshop 每个数据库表结构说明_MySQL
  18. 面试官:如何快速定位慢SQL
  19. 使用PIA查找组件的PeopleSoft导航
  20. SmartX 超融合支撑 Rhapsody 医疗集成引擎运行效率实测详解 | 场景测评

热门文章

  1. 2010年全球地震统计 4月14日 更新
  2. 微信小程序用户头像昵称获取规则
  3. Pandas:文件读取、存储【读取:read_**()、写入:to_**()】【文件类型:csv、excel、json、HDF5】
  4. 浅谈互联网金融测试平台规划
  5. UI设计师都能做什么,UI设计都有哪几个职业方向
  6. XCTF-Reverse-ExerciseArea-004-writeup
  7. idea创建Scala入门HelloWorld
  8. 【读书、思考、写作】
  9. MRD检测对预测肿瘤复发至关重要,臻和科技MinerVa平台为何值得信任?
  10. Ubuntu远程桌面修改