pdfjs预览pdf报错

跳转之后的页面已经可以出来,blob生成的链接也是有返回的,但是预览是空白,并且控制台警告:Warning: Invalid stream: “FormatError: Bad FCHECK in flate stream: 120, 239”

跟到源码里面看警告的原因,应该还是解析出了问题。

解决方案:

axios请求文档流时候的responseType改为blob

responseType如果不修改,axios中默认的是json,链接:https://www.cnblogs.com/zhusf/p/11123464.html

xhr中如果设置为空,默认是text,链接:https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest/responseType

// 原本这里写的是this.$axios.get(`/api/preview?id=${id}`)
// 后来发现问题就在这里,$axios是封装的axios,没有设置requestType,而我只对照了返回来的数据是文档流之后就忽略了这个问题!
// $request是把axios直接抛了出来
this.$request({
    methods: 'GET',
    url: `/api/preview?id=${id}`,
    responseType: 'blob'
})
.then(res => {
    console.log(res)
    var blob = new Blob([res.data], {
        type: 'application/pdf;chartset=UTF-8'
    })
    const fileURL = URL.createObjectURL(blob)
    window.open(`${path}pdf/web/viewer.html?file=${fileURL}`)
})
.catch(err => {
    console.log(err)
})

补充!!!!!

这个功能是上线到移动端的,PC端直接open新页面完全没问题,但是到移动端,页面打开还是无响应。

在PC上改为window.location.href直接替换地址,复现了移动端的情况。

推测是因为打开新的页面把原来页面刷新,而pdfjs本身用的地址就是虚拟地址放的文件流,所以猜是因为请求不到原来的文件流了。

移动端方案:本页内添加了个iframe,全屏展示 ( •̀ ω •́ )y

### 解决 `pdfjs-dist` 预览 PDF 文件时章节缺失的问题 当遇到使用 `pdfjs-dist` 库预览 PDF 文档时出现章节缺失的情况,可以考虑以下几个方面来排查和解决问题。 #### 检查库版本兼容性 确保使用的 `pdfjs-dist` 版本是最新的稳定版。有时旧版本可能存在未修复的 bug 或者不完全支持某些功能特性[^1]。可以通过 npm 更新命令更新到最新版本: ```bash npm install --save pdfjs-dist@latest ``` #### 加载配置优化 确认加载 PDF.js 的方式是否正确无误。通常情况下,在项目入口文件中引入核心模块并设置全局变量是一个好的实践方法。下面是一段典型的初始化代码片段: ```javascript import * as pdfjsLib from 'pdfjs-dist'; // Import the stylesheets for worker and viewer components if necessary. import 'pdfjs-dist/web/pdf_viewer.css'; // Set up Worker URL to resolve loading issues when running in production mode or different environments. pdfjsLib.GlobalWorkerOptions.workerSrc = new URL( 'pdfjs-dist/build/pdf.worker.min.js', import.meta.url, ).toString(); ``` 对于 Webpack 用户来说,还需要注意打包过程中可能出现的资源路径错误以及懒加载机制的影响。如果存在大量重复性的依赖项被分割成多个小块,则可能导致部分脚本未能及时下载完成而影响渲染效果[^3]。 #### 数据源验证 仔细核对所要展示文档的数据流或网络请求地址是否准确有效。特别是针对远程服务器上的PDF链接,任何细微的变化都可能引起解析失败进而造成结构信息丢失的现象发生。建议先通过浏览器自带工具或者其他在线服务测试目标文件能否正常打开查看其目录树形结构。 #### 错误日志分析 最后但同样重要的是关注控制台输出的日志消息。现代浏览器开发者模式下能够捕捉到来自 JavaScript 运行环境内部产生的异常提示,这对于定位具体原因非常有帮助。留意是否有报错指出缺少特定字体、图片资源或者是 API 调用返回码异常等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值