PDF.js实现按需分片加载pdf文件

pdf.js实现按需、分片加载pdf文件

1.服务端配置

分片加载的实现是基于 HTTP-RANGE,即服务端的文件接口必须实现了HTTP-RANGE。

服务端文件接口实现HTTP-RANGE,需要服务端添加如下响应头

复制代码
[
  {
    key: "Accept-Ranges",
    value: "bytes"
  },
  {
    key: "Access-Control-Expose-Headers",
    value: "Accept-Ranges,Content-Range"
  }
]

2.下载 releases

mozilla/pdf.js 的github仓库下载最新的 Releases

https://github.com/mozilla/pdf.js/releases

这里以 Vue 为例,其他前端框架同理

Releases 包解压后放至前端项目的 public 根目录下,如下图

3.PDF预览

在页面中用 iframe 形式引入 viewer.html 并传入需要预览的pdf地址

html 复制代码
<script lang="ts" setup>
import { ref } from 'vue'
const pdfUrl = ref('http://127.0.0.1:2023/test.pdf')
</script>
<template>
  <div class="w-full h-full">
    <iframe
      :src="`/pdfjs/web/viewer.html?file=${encodeURIComponent(pdfUrl)}`"
      frameborder="0"
      class="w-full h-full"
    ></iframe>
  </div>
</template>

打开网络请求面板,如果 pdf 文件的接口请求都是 206 状态码,说明分片加载成功

点击单个请求,响应标头如下:

相关推荐
belldeep12 分钟前
python:用 Flask 3 , mistune 2 和 mermaid.min.js 10.9 来实现 Markdown 中 mermaid 图表的渲染
javascript·python·flask
m0_7369191013 分钟前
C++中的委托构造函数
开发语言·c++·算法
lsx20240628 分钟前
Python3 SMTP发送邮件教程
开发语言
懈尘29 分钟前
从 Java 1.7 到 Java 21:逐版本深入解析新特性与平台演进
java·开发语言
凉辰32 分钟前
使用uni.createInnerAudioContext()播放指定音频(踩坑分享功能)
开发语言·javascript·音视频
hello 早上好33 分钟前
05_Java 类加载过程
java·开发语言
PPPPPaPeR.1 小时前
光学算法实战:深度解析镜片厚度对前后表面折射/反射的影响(纯Python实现)
开发语言·python·数码相机·算法
echoVic1 小时前
多模型支持的架构设计:如何集成 10+ AI 模型
java·javascript
橙露1 小时前
Java并发编程进阶:线程池原理、参数配置与死锁避免实战
java·开发语言
froginwe111 小时前
C 标准库 - `<float.h>`
开发语言