Задать вопрос
@bossigorxxx

Как сделать lazy load pdf?

Возможно ли загрузить pdf не ожидая всей его загрузки? Есть читалка просмотрощик pdf и он пока не загрузит весь pdf не откроется. А pdf бывают до 60 mb.
  • Вопрос задан
  • 116 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Никак не сделать. В самом конце PDF-файла находится запись startxref с указателем на таблицу объектов (блок xref), и блок trailer, определяющий структуру документа.. Так что, пока не прочитан весь файл, невозможно определить где в нём находятся отдельные страницы.
В описании формата PDF сказано:
Applications should read a PDF File from its end.
Ответ написан
Daemon23RUS
@Daemon23RUS
Applications should read a PDF File from its end.

Чтение startxref решается через httpConnection.setRequestProperty("Range","-300"); (чтение последних 300 байт файла)
Далее через setRequestProperty вычитывается диапазон с первой/2й/3й
P.S. Изначально писал сообщение как комментарий к ответу Rsa97, но запостилось как ответ к вопросу, поэтому дополню: Посмотрите в эту сторону. https://github.com/mozilla/pdf.js.git
PDF.js is fetching the entire PDF file from a server. Can it fetch only the required portions for rendering?
Actually, PDF.js is doing just that. PDF is a complicated format; in most of the cases, the vital data of a PDF document is located at the end. Depending on browser support and on what web server returns the HTTP Range Requests headers, PDF.js may automatically start using HTTP Range Requests to fetch not-yet-loaded portions of a PDF needed for rendering visible pages, so a document can be rendered without fully loading it.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы