使用pdf.js时,仅从服务器加载所需的页面

时间:2013-04-08 14:49:38

标签: javascript html5 pdf pdf.js

我正在使用pdf.js查看pdf文档,pdf.js首先从服务器获取整个文档然后开始渲染,这种行为导致两个问题:

  • 如果pdf文档很大,则需要很长时间才能加载。
  • 如果有人从移动设备上读取,则缓存内存泄漏。

我认为通过仅请求用户浏览所需页面而不是整个文档来使用http范围请求将解决这些问题。

这是一个实现范围请求的PR,但是请求仍在运行,直到整个文档加载时没有使用fetch-as-you-go行为。 https://github.com/mozilla/pdf.js/pull/2719

任何帮助?

1 个答案:

答案 0 :(得分:1)

如果内存在PDF格式上正确使用我,除非在调用之前知道每个页面的确切字节范围,否则实际文档不容易拆分(即便如此,我也不确定JS是否可以处理二进制操作有效地这样做,或者如果你要修改JS lib来做到这一点)。您可能想要做的是按页面服务器端(使用PHP或其他语言)拆分文档,而不是使用pdf.js加载整个文档,逐个加载页面。

这有一些好处和一些缺点。缺点:

  • 您需要以编程方式拆分PDF。这实际上并不难,但有点乏味
  • 您还需要找到一种方法将PDF的所有URI传递给您的查看器。这也很容易

优势应该是显而易见的:减少带宽使用,提供逐页查看的能力,保存单个页面的能力。