Поддержка чтения PDF-документов в сетирганизуйте выдачу PDF-страниц по запросу без загрузки всего документа. Иногда читатели хотят загрузить весь документ, иногда — прочитать только несколько страниц. Если читателю нужна отдельная страница из документа, то это не должно быть связано с загрузкой всего документа, т. к. длительная загрузка может отпугнуть его. Самое простое решение состоит в конфигурировании PDF-документа и сервера для выдачи отдельных страниц по запросу. Альтернативой является использование PDF-обложек.

Подготовка документа в формате PDF

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

Проверьте, линеаризуется ли PDF-документ, открывая его в программе Acrobat/Reader и просматривая его свойства. Выберите команду File\Document Properties\Description (Файл\Свойства документа\Описание) в Acrobat 6 или File\Document Properties\Summary (Файл\Свойства документа\Выводы) в Acrobat 5. Линеаризованному PDF-документу соответствует строка Fast Web View: Yes (Быстрый сетевой просмотр: Да).

Проект Xpdf (http://www.foolabs.com/xpdf/) включает инструмент командной строки под названием pdfinfo, который показывает, линеаризован ли PDF-документ. Передайте PDF-документ программе pdfinfo следующим образом:

pdfinfo mydoc.pdf

Программа pdfinfo выдаст на экран текстовое сообщение, содержащее строку Optimized: Yes (Оптимизированный: Да), если PDF-документ линеаризован. Эта программа распространяется бесплатно.

Чтобы создать линеаризованный PDF-документ, используя программу Acrobat, проверьте сначала свои параметры настройки. Командой меню Edit\Preferences (Правка\Параметры настройки) выберите категорию General (Общие) в Acrobat 6 или Options (Опции) в Acrobat 5. Рядом с Save As установите флажок Optimized for Fast Web View (Сохранить как оптимизированный для быстрого сетевого отображения) и нажмите ОК.

Откройте PDF-документ, который хотите линеаризовать, а затем примените команду Save As к тому же файлу. В Acrobat 6 можете изменить уровень совместимости PDF-документов, выбрав File\Reduce File Size (Файл\Уменыиить размер файла) вместо Save As. Откройте документ и проверьте, как он работает.

Если вы внесете изменения в PDF-документ в программе Acrobat, а затем просто выполните команду File\Save (Файл\Сохранить), то он больше не будет линеаризоваться. Только использование опции Save As гарантирует, что документ останется линеаризованным.

Программа Ghostscript включает инструмент командной строки pdfopt, который также линеаризует PDF-документ. Вызовите программу pdfopt из командной строки:

pdfopt input.pdf output.linearized.pdf

Подготовка сервера

Серверы Apache версии 1.3.17 и старше и Microsoft IIS версии 3 и старше должны обслуживать PDF-страницы по требованию без дополнительного конфигурирования. Необходимой для этого является поддержка сервером сети байтового диапазона. Протокол HTTP 1.1 поддерживает байтовый диапазон (http://www.freesoft.org/CIE/RFC/2068/160.htm). Это означает, что клиент может запросить у сервера сети определенный диапазон байтов. Вместо того, чтобы высылать полный файл, сервер пошлет только эти байты.

Сервер должен подтвердить поддержку байтового диапазона сообщением Accept-Ranges: bytes (Диапазоны ввода: байты) в ответ на запрос PDF-файла, иначе Acrobat не будет выполнять постраничную загрузку. Если вы хотите отказать клиентам в попытке постраничного обслуживания, используйте сообщение Accept-Ranges: none (Диапазоны ввода: ни одного).