当前位置: 首页 > news >正文

blob文件流前端显示pdf

首先请求需要修改
responseType: ‘blob’, 需要修改

请求头
{responseType: 'blob',url: url,method: 'get',}

三种方法:

1.直接处理,在新页面打开

const blob = new Blob([data],{
type:'application/pdf'
})
let url = window.URL.createObjectURL(blob)
window.open(url,'_blank')
问题在于父页面关闭或者刷新后,文件页面获取不到文件流,刷新显示空白页。

2.在新页面用iframe接

<iframe :src='xxxxxx'>
问题在于点击iframe中文件之后无法在iframe监听事件,ctrl+p 显示空白

3.使用pdf.js

到 mozilla.github.io/pdf.js/gett… 页面中找到下载位置,下载 PDF.js
在viewer.js 修改
注释下列代码   不然 可能会出现跨域错误,无法正常预览文件
if (origin !== viewerOrigin && protocol !== "blob:") {throw new Error("file origin does not match viewer's");
}随后在页面展示
let path = window.URL.createObjectURL(blob)
const fileUrl = '/pdfjs2/web/viewer.html'
// 生产环境下
if (process.env.NODE_ENV === 'production') {this.pdfurl = fileUrl + '?file=' + encodeURIComponent(path)
} else {
// 开发环境this.pdfurl = fileUrl + '?file=' + encodeURIComponent(path)
}修改清晰度    --注意清晰度越高,打印预览时 谷歌内核滚动条越卡
this._printResolution = 450//printResolution || 150
新版本的pdf.js viewer.js被改为mjs,上线时nginx需要修改
另外还有个bug 在一个页面打印预览时,同源的其他页面无法点击

相关文章:

  • GIT提交、回滚等基本操作记录
  • StackOverflowError的JVM处理方式
  • 10-2 HNCST - 多线程4 - 线程同步Condition——python
  • 2023年,我在美国的这一年!
  • CSS Grid 和 Flexbox
  • kivy开发一个登陆界面
  • 12.30_黑马数据结构与算法笔记Java
  • Java:IO流——字节流和字符流
  • Qlib从入门到精通
  • 2022年全国职业院校技能大赛高职组云计算正式赛卷第三场-公有云
  • pytorch01:概念、张量操作、线性回归与逻辑回归
  • 【论文阅读】Realtime multi-person 2d pose estimation using part affinity fields
  • x-cmd-pkg | 音视频处理领域中常用的开源转换工具:ffmpeg
  • Kubernetes 学习总结(43)—— Kubernetes 从提交 deployment 到 pod 运行的全过程
  • SpringBoot 集成 Kafka消息中间件,Docker安装Kafka环境
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • 11111111
  • C++类的相互关联
  • CSS实用技巧
  • ES6简单总结(搭配简单的讲解和小案例)
  • es的写入过程
  • js学习笔记
  • LeetCode算法系列_0891_子序列宽度之和
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Python中eval与exec的使用及区别
  • QQ浏览器x5内核的兼容性问题
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • ViewService——一种保证客户端与服务端同步的方法
  • Vue 2.3、2.4 知识点小结
  • vue2.0项目引入element-ui
  • vue-cli在webpack的配置文件探究
  • Webpack 4 学习01(基础配置)
  • webpack4 一点通
  • WePY 在小程序性能调优上做出的探究
  • Zepto.js源码学习之二
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 翻译:Hystrix - How To Use
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • Java性能优化之JVM GC(垃圾回收机制)
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #define
  • #每天一道面试题# 什么是MySQL的回表查询
  • (1)SpringCloud 整合Python
  • (14)Hive调优——合并小文件
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)