2013-04-08 35 views
3

我使用pdf.js查看pdf文档,pdf.js首先从服务器获取整个文档然后开始渲染,并且此行为导致两个问题:使用pdf.js时只从服务器加载需要的页面

  • 如果PDF文档是大的,它需要很长的时间来加载。
  • 如果有人从移动设备读取缓存内存泄漏。

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

这里是实现范围请求,但仍在运行,直到整个文档的请求加载不与取,因为你去的行为PR。 https://github.com/mozilla/pdf.js/pull/2719

任何帮助吗?

+0

问题服务器是否支持范围请求?特别是在动态创建pdf的情况下,他们通常不会。 – mkl 2013-04-08 21:35:20

+0

是的,服务器支持范围请求,但问题是范围请求仍在运行,直到整个文档加载。 – 2013-04-09 06:00:41

+0

这听起来像服务器不*支持范围请求,而是总是提供完整的文件。无论是你的测试PDF还是一种无法满足范围要求的人。 – mkl 2013-04-09 06:42:59

回答

1

如果没记错的PDF格式,实际的文件是不容易裂开的,除非你知道每个页面的确切字节范围做一个呼叫之前(即使如此,我不知道JS能处理二进制有效的操作来完成这项工作,或者如果你正在修改JS库来做到这一点)。您可能想要做的是按页面服务器端(使用PHP或其他语言)拆分文档,而不是使用pdf.js加载整个文档,逐个加载页面。

这有一些优点和一些缺点。缺点:

  • 您需要以编程方式分割PDF。这实际上并没有那么难,但有点乏味
  • 您还需要找到一种方法,以PDF文件的所有URI传递到您的浏览器。这也很容易

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

相关问题