2014-01-22 2 views
2

Предположим, у меня есть 400 МБ PDF на веб-сервере, и я хочу, чтобы пользователь ipad мог его открыть и начать смотреть на него как можно скорее , не загружая файл сначала. Каковы варианты?Открытие большого файла PDF на ipad без его загрузки сначала

  • Может ли Safari передавать большой PDF-файл? Может ли он показывать первые страницы во время загрузки файла?

  • Есть ли способ создать собственное приложение для достижения этого? Если да, то должен ли PDF быть «spitted» первым на сервере? Как?

Любые советы о том, как открыть большой PDF-файл, дружелюбно и на ipad, будут оценены. Бонусные баллы, если индекс PDF доступен!

+1

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

+4

'* Линеаризованный *', или '* оптимизирован для быстрого просмотра в Интернете *' PDF был введен именно по этой причине - «показать первую страницу, пока файл все еще загружается», но кажется, что только программное обеспечение Adobe (плагины Reader и браузера) использует эту функцию. – user2846289

+0

Спасибо вам за помощь! Но не могли бы вы дать более подробную информацию о каждом решении? Например, как бы вы автоматически разбивали файл pdf по страницам и все еще могли показывать таблицу содержимого пользователю, чтобы он мог настроить таргетинг на определенную страницу (скажем, 5000 страниц)? Для линеаризованных PDF-файлов существует ли документация, в которой перечислены клиенты на ipad, поддерживающие эту функцию?Я вижу, что Adobe Reader для ipad не работает на ipad 1, есть ли альтернатива? Кроме того, будет ли доступ к TOC доступным, как только файл начнет загружаться? – electrotype

ответ

1

Чтобы очистить вещи:

  • Линеаризованной PDF имеет свой порядок объектов переупорядочению, так что все необходимые данные для отображения страницы находятся перед другими. Вы можете прочитать более подробную информацию в PDF specification в приложении F (стр 683)

В случае, если Вы не нашли применение, который поддерживает линеаризованную PDF, наилучшее решение с моей точки зрения было бы рендеринг страниц на стороне сервера и создать собственный протокол для передачи только одной страницы с оглавлением.

Если Вы не хотите, чтобы создать программу просмотра пользовательских PDF с линеаризованной PDF, Вы просто создать небольшой портативный «страницу просмотра», который может быстро показать таблицу содержимого, а затем задать сервер для точного количества страниц.

Пример Интерфейс сервера:

class Pages 
{ 
    string title; 
    int number; 
} 

Stream GetDocumentPage(Page n); 
List<Page> GetDocumentPages(); 

Для этого можно использовать с открытым исходным кодом решения (например, Ghostscript) для анализа PDF-файл и сделать нужную страницу. Затем отправьте двоичные данные по своему настраиваемому протоколу и странице отображения на своем небольшом переносном «странице просмотра».

Это решение не требует загрузки всего документа, так как это может вызвать значительный сетевой трафик.

Надеюсь, это поможет.

Смежные вопросы