【问题标题】:PDF JS - Lazy load?PDF JS - 延迟加载?
【发布时间】:2017-11-28 14:04:27
【问题描述】:

看来,pdf.js 本身请求 PDF 文件的整个字节范围请求。相反,是否可以在 PDF 加载时仅请求 5 个页面,在滚动时可以加载另一组 5 个页面,就像那样.. 有没有办法通过使用 pdf.js 来实现这一点?

【问题讨论】:

标签: pdf.js pdfjs


【解决方案1】:

长话短说 - 没有。

PDF 不是一种连续的存储格式。如果 PDF 文件被格式化为快速浏览网页,那么您可以让它显示第 1 页,而其他页面仍在流入,但您不能要求从特定页面或页面范围开始。内部 pdf 使用一堆部分、它们之间的链接/指针和摘要。把它们想象成木块,它们之间有一些细绳。在您拥有“足够”的文件来提供您需要的部分之前,您无法渲染任何内容,但就您的问题而言,内部部分的组织几乎是随机的。

获取特定页面的唯一方法是让服务器端组件为您将它们从 PDF 文件中拆分出来,然后制作一个仅包含这些部分的新 PDF 文件,但翻到第 6 页意味着打开一个新的文件等

编辑:Acrobat 查看器的启动参数可以让您设置要显示的第一页,其他查看器可能会提供此功能,但除非您有一些非常智能的客户端-服务器交互,否则这仍然需要整个PDF 文档首先出现在客户端中。

编辑 2:根据 @async5 的评论,PDF.js“可能”能够进行页面范围加载。请参阅 PDF.js 文档的this section。但请注意,对提供 PDF 文件的 Web 服务器有要求。

【讨论】:

  • 即使服务器支持范围请求,我认为您的原始答案是正确的,即 PDF.JS 不能只获取 PDF 中的任意页面,而不会将所有内容都放到该页面。我有线性化 PDF 和支持范围请求的服务器,我将 disableAutoFetch 设置为 false。这可以防止在打开时下载整个 friggin PDF,但是如果我跳转到第 1000 页,它会加载 0 到 1000 之间的所有内容。其中,我不太明白为什么并且希望它没有这样做。看不出它必须这样做的原因。
猜你喜欢
  • 1970-01-01
  • 2014-02-21
  • 2012-04-07
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 2019-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多