pdfjs 实现分片

pdfjs 加载大文件的时候,调接口也慢,会出现卡顿的情况,时间很长,研究了半天,发现pdfjs自带分片功能,调接口的时候会自己进行处理,先加载出前面的页面,再慢慢加载后面的页面,提高了用户体验,实际上拿完整个文件的时间会更长

前端部分:

viewer.js

  disableAutoFetch: true, //关闭自动获取(默认false),按需加载
  disableFontFace: false,
  disableRange: true, //true 可以实现pdf文件页码的自动选择
  disableStream: false,

 disableAutoFetch: {
	value: true,
    kind: OptionKind.API + OptionKind.PREFERENCE,
 },
 disableFontFace: {
    value: false,
    kind: OptionKind.API + OptionKind.PREFERENCE,
 },
 disableRange: {
    value: true,
    kind: OptionKind.API + OptionKind.PREFERENCE,
 },
 disableStream: {
    value: false,
    kind: OptionKind.API + OptionKind.PREFERENCE,
 },

pdf.js

        var DEFAULT_RANGE_CHUNK_SIZE = 65536 * 16;

使用

 <iframe
    :src="urlVal"
     id="orgIframe"
     ref="orgIframe"
     width="100%"
     :allowTransparency="true"
     scrolling="auto"
     frameborder="0"
     style="height: calc(100% - 4px)"
   >
 </iframe>

// 只能直接调用接口
let u = `${this.baseUrl}/fileTransRecord/loadSource?id=${id}`; 
this.urlVal = `./pdfjs/web/viewer.html?file=${encodeURIComponent(u)}&wordType=1#zoom=auto`;
后端部分

加响应头

Accept-Ranges: bytes (表明服务器支持分片加载)
Content-Length: 408244 (表明该文件的所有字节大小),
'Access-Control-Expose-Headers':'Accept-Ranges,Content-Range',
判断是否成功
  1. 接口load首次加载返回200,之后返回状态码206
    在这里插入图片描述

参考文章:

  1. PDF.js实现按需分片加载pdf文件-包含前后端开发源码和详细开发教程

  2. vue3项目使用pdf.js插件

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值