Чтобы очистить вещи:
- Линеаризованной PDF имеет свой порядок объектов переупорядочению, так что все необходимые данные для отображения страницы находятся перед другими. Вы можете прочитать более подробную информацию в PDF specification в приложении F (стр 683)
В случае, если Вы не нашли применение, который поддерживает линеаризованную PDF, наилучшее решение с моей точки зрения было бы рендеринг страниц на стороне сервера и создать собственный протокол для передачи только одной страницы с оглавлением.
Если Вы не хотите, чтобы создать программу просмотра пользовательских PDF с линеаризованной PDF, Вы просто создать небольшой портативный «страницу просмотра», который может быстро показать таблицу содержимого, а затем задать сервер для точного количества страниц.
Пример Интерфейс сервера:
class Pages
{
string title;
int number;
}
Stream GetDocumentPage(Page n);
List<Page> GetDocumentPages();
Для этого можно использовать с открытым исходным кодом решения (например, Ghostscript) для анализа PDF-файл и сделать нужную страницу. Затем отправьте двоичные данные по своему настраиваемому протоколу и странице отображения на своем небольшом переносном «странице просмотра».
Это решение не требует загрузки всего документа, так как это может вызвать значительный сетевой трафик.
Надеюсь, это поможет.
это может показаться глупым, но вы могли бы разбить сервер на отдельные pdf-страницы, а затем на лицевой стороне вы можете скачать их по одному за раз, сначала сначала загрузите, сколько страниц есть, а затем загрузите первый, когда это делается, загрузите второе, а на лицевой панели отобразите первую страницу, и каждые несколько секунд пользователь увидит новую страницу. –
'* Линеаризованный *', или '* оптимизирован для быстрого просмотра в Интернете *' PDF был введен именно по этой причине - «показать первую страницу, пока файл все еще загружается», но кажется, что только программное обеспечение Adobe (плагины Reader и браузера) использует эту функцию. – user2846289
Спасибо вам за помощь! Но не могли бы вы дать более подробную информацию о каждом решении? Например, как бы вы автоматически разбивали файл pdf по страницам и все еще могли показывать таблицу содержимого пользователю, чтобы он мог настроить таргетинг на определенную страницу (скажем, 5000 страниц)? Для линеаризованных PDF-файлов существует ли документация, в которой перечислены клиенты на ipad, поддерживающие эту функцию?Я вижу, что Adobe Reader для ipad не работает на ipad 1, есть ли альтернатива? Кроме того, будет ли доступ к TOC доступным, как только файл начнет загружаться? – electrotype