Как получить PDF для отображения в веб-браузере до его полной загрузки - PullRequest
3 голосов
/ 18 ноября 2008

У меня есть клиент, который борется с медленной загрузкой PDF-файлов в Интернете. У моего клиента есть очень большие PDF-файлы размером почти 10 Мб. Их загрузка занимает 3-4 минуты. Файлы не будут отображаться, пока весь файл не будет загружен. Мы и они видели сайты других, где PDF-файлы загружают одну страницу за раз, поэтому конечный пользователь может начать просмотр файла, поскольку остальная часть страницы все еще загружается в фоновом режиме. Создает иллюзию, что страница загружается быстрее.

В соответствии с документацией, которую они видят, IIS 6 должен автоматически делать это, если файл PDF создается с установленным флажком «Оптимизировано для быстрого просмотра в Интернете». Это проверено, и файл все еще не будет загружать страницу за один раз.

Они выполнили поиск и не нашли ничего, кроме того, что IIS сделает это автоматически, если файл сохранен правильно.

Как они могут "транслировать" pdf? Это потому, что PDF-файлы были сохранены особым образом? Это сценарий Java, который обрабатывает загрузку? Или в IIS должно произойти изменение?

Спасибо

Обновление: Файл начинается так:

%PDF-1.4
%âãÏÓ
171 0 obj << 0/Linearized 1

линеаризованной

Документ PDF не обслуживается со страницы aspx / asp. (Он просто размещен непосредственно на сайте и связан с ним).

Ответы [ 5 ]

1 голос
/ 18 ноября 2008

Во-первых, документ должен быть «линеаризован», как объяснили другие; Вы можете линеаризовать его в Acrobat или с помощью pdfopt из Ghostscript . Во-вторых, веб-сервер должен иметь возможность обслуживать байтовые диапазоны (то есть поддерживать заголовок Range); Я понятия не имею, как настроить IIS для этого, но даже если документ линеаризуется, клиент должен иметь возможность читать определенные байтовые диапазоны.

1 голос
/ 18 ноября 2008

Сохраните один из файлов и откройте его в текстовом редакторе. Если вы не видите что-то вроде

<< /Linearized 1.0 /L <number> /H [<number> <number>] /O <number> /E <number> ...

в первые пару сотен байтов или около того, вы не получите линеаризованный (т. Е. Быстрый веб) PDF.

1 голос
/ 18 ноября 2008

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

1 голос
/ 18 ноября 2008

Вам необходимо оптимизировать формат PDF и не доверять IIS, чтобы сделать это за вас.

Есть ряд приложений, которые сделают это за вас. Я использовал CVision (их сжатие - 2-ой, ни одного, но лицензирование и SDK - боль), есть также несколько более дешевых альтернатив здесь , но я не знаю, насколько хорошо они работают.

Чтобы прояснить точку зрения Тони ... (я думаю)

Если вы на самом деле использовали эти инструменты и ваш PDF линеаризован, попробуйте преобразовать PDF в байтовый массив и Response.Write () байтовый массив (с заголовками содержимого и т. Д.) Клиенту (в новом окне браузера или рамка)

1 голос
/ 18 ноября 2008

Можно ли использовать сторонние сервисы, такие как Scribd ? Если вы пойдете по этому пути, вы можете встроить их потокового просмотра на сайт вашего клиента. Просто мысль, хотя я знаю, что это не совсем подходит для любого типа бизнеса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...