2013-04-08 3 views
3

Я использую pdf.js для просмотра pdf-документов, pdf.js сначала извлекает весь документ с сервера, а затем запускает рендеринг, и это вызывает две проблемы:Загрузка только необходимых страниц с сервера при использовании pdf.js

  • Если документ PDF большой, загрузка занимает много времени.
  • Утечка кеш-памяти, если кто-то читает с мобильных устройств.

Я думаю, что использование запросов диапазона HTTP, запрашивая только нужные страницы, которые пользователь просматривает, а не весь документ, решит эти проблемы.

Это PR, который реализует запросы диапазона, но запросы все еще выполняются до тех пор, пока весь документ не будет загружен не по принципу «выборка по ходу». https://github.com/mozilla/pdf.js/pull/2719

любая помощь?

+0

Отвечает ли сервер на запросы диапазона запросов? Особенно в случае динамически создаваемых PDF-файлов их часто нет. – mkl

+0

Да, сервер поддерживает запросы диапазона, но проблема в том, что запросы диапазона все еще работают до загрузки всего документа. –

+0

Это похоже на то, что сервер делает * не * запросы диапазона поддержки, а вместо этого всегда служит для полного файла. Либо это, либо ваши тестовые PDF-файлы не являются профитом из запросов диапазона. – mkl

ответ

1

Если память соответствует мне в формате PDF, фактический документ нелегко разделить, если только вы не знаете точный байт-диапазон каждой страницы перед выполнением вызова (и даже тогда я не уверен, что JS может обрабатывать двоичные файлы достаточно эффективно для этого, или если вы хотите изменить JS lib, чтобы сделать это). Вы можете захотеть разделить ваши документы на странице на стороне сервера (используя PHP или другой язык), а вместо загрузки всего документа с помощью pdf.js загрузите страницы один за другим.

Это имеет некоторые преимущества и некоторые недостатки. Недостатки:

  • Вам необходимо программно разделить PDF-файлы. На самом деле это не так сложно, но немного утомительно
  • Вам также нужно будет найти способ передать все URI файлов PDF вашему зрителю. Это также довольно легко.

Преимущества должны быть очевидны: меньшее использование полосы пропускания, возможность предоставления поэтапного просмотра, возможность сохранения отдельных страниц.