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 状态码,说明分片加载成功

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

相关推荐
kyriewen1 小时前
面试官问你:“AI 能写 80% 的代码了,公司为什么还需要你?”
前端·javascript·面试
Goodbye4 小时前
从 Token 到 Embedding:LLM 核心基础深度解析
javascript·人工智能
用户938515635074 小时前
工具调用背后:LLM 如何突破“缸中大脑”,操控真实世界?
javascript·人工智能
Goodbye4 小时前
从函数到智能:LLM Tool Use 深度解析
javascript·人工智能
半个落月4 小时前
大模型到底是怎么“调用工具”的?从一个 Node.js Demo 看懂 Tool Use
javascript·人工智能
烬羽4 小时前
中英文 token 数量差一倍?两段 JS 代码搞懂 LLM 底层是怎么"读"文字的
javascript·程序员·架构
山河木马4 小时前
矩阵专题1-怎么创建模型矩阵(uModelMatrix)
javascript·webgl·计算机图形学
前端开发爱好者9 小时前
支持 110 种文件预览!兼容 Vue、React、Svelte!
前端·javascript·vue.js
大家的林语冰11 小时前
👍 尤大重学 Webpack,Vite 8.1 再进化,打包模式复活!
前端·javascript·vite
张元清11 小时前
React useIsomorphicLayoutEffect:修掉 SSR 下的 useLayoutEffect 警告(2026)
前端·javascript·面试