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

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

相关推荐
鬼手点金8 小时前
nanoGPT/nanochat 能做出 DeepSeek/Qwen 这样的大模型吗?
服务器·前端·javascript·bug·openclaw
软件技术NINI9 小时前
美妆商城html+Css+js 4页
javascript·css·html
蛋蛋的就会顺顺的9 小时前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
码艺-Alimjan10 小时前
Tauri 源码备份 · 打包 & 解压 总结,源码收集之路
前端·javascript·vue.js
死磕音视频10 小时前
让小模型做选择题:限定候选项并读取 logits 概率的入门实践(附 Python 代码)
开发语言·python·大模型·文本分类·transformers
顽疲12 小时前
Java vue 养老系统源码详解:月账单 care_month_bill 与 Quartz 扣费 Job 实践
java·开发语言·vue.js·vue养老·springboot养老·java养老
DevUp12 小时前
标着 JavaScript 的 Wiki 与知识库:既不是 CMS 也不是 SSG(番外三)
javascript·node.js·cms
Wang's Blog12 小时前
Java 项目实战: 交友项目 - 安装开发工具与环境准备
java·开发语言·交友
kyriewen12 小时前
我上手了 Vite+ 1.0:Node 不用自己装,lint 却翻车了
前端·javascript·程序员
鹏多多13 小时前
前端是如何死去的?| 完整时间线
前端·javascript·程序员