2008-11-18 3 views
3

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

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

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

Как они могут «потопить» pdf? Это потому, что PDF-файлы были сохранены особым образом? Является ли это скриптом java, который обрабатывает загрузку? Или есть изменения, которые должны произойти в IIS?

Благодаря

Update: Файл начинается так:

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

Линеаризованная?

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

ответ

1

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

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

Для уточнения точки Тони ... (я думаю)

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

1

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

1

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

+0

+1 к этому - я применил тот же трюк с PHP для управления диапазонами обслуживаемых байтов – 2008-11-18 15:19:34

1

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

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

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

1

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

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