открытие больших PDF-файлов в Интернете - PullRequest
2 голосов
/ 05 декабря 2011

У меня есть 27 МБ PDF-файл, который размещен в Интернете.Когда я пытаюсь открыть его, требуется время, чтобы открыть его.Так есть ли способ, где я могу просмотреть этот большой файл PDF немного быстро.Я предполагаю, что есть некоторые настройки, где мы можем просматривать страницы файла один раз после загрузки некоторых страниц.Любое решение этого вопроса будет высоко оценено

Ответы [ 5 ]

4 голосов
/ 05 декабря 2011

Что вам нужно сделать, чтобы ваши PDF-файлы, чтобы сделать их "веб-оптимизированными".Технически более правильный термин - сделать их «линеаризованными»:

  • Acrobat + Distiller и многие другие инструменты могут сделать это.
  • Ghostscript также поставляется с дополнительной вспомогательной утилитой, написанной на PostScript с именем pdfopt.ps, которая может сделать это.Просто запустите:
    gs -q -dNODISPLAY -P- -dSAFER -dDELAYSAFER -- /path/to/pdfopt.ps input.pdf optimized.pdf или, если вы в Windows:
    gswin32.exe -q -dNODISPLAY -P- -dSAFER -dDELAYSAFER -- c:/path/to/pdfopt.ps input.pdf optimized.pdf

Обычно pdfopt.ps должен быть установлен вместе с вашим Ghostscript в пути установки lib/подкаталог.Если нет, вы можете скачать pdfopt.ps из Git-репозитория Ghostscript.

Линеаризация внутренне реорганизует PDF, так что (копия) его внутреннего ToC объектов PDF (в техническом плане: его " xref table") помещается близко к началуфайла (вместо его конца), плюс еще некоторые изменения.

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

Более подробную информацию о линеаризации PDF можно прочитать в официальном PDF-1,7.Спецификация стандарта ISO, доступна на веб-сайте Adobe

  • в его (нормативном) Приложении F, "Линеаризованный PDF" , начиная со страницы 683, и
  • в его (информативном) Приложении G, "Линеаризованные стратегии доступа к PDF" , начиная со страницы 703.

Пример линеаризованной банки PDF можно найти здесь


Обновление (2013-2-15)

Начиная с выпуска 9.07 Ghostscript, линеаризованный («оптимизированный для веб») вывод PDF можно создавать напрямую (бездвухэтапный подход, описанный выше) путем добавления следующего параметра в командную строку:

-dFastWebView=true

Поскольку файл pdfopt.ps теперь является избыточным, он был удален из текущего исходного хранилища Ghostscript.

0 голосов
/ 07 февраля 2015

В дополнение к комментарию Курта. Я собрал эту командную строку, и она, казалось, сделала трюк для создания оптимизированного файла PDF:

gs -q -P- -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dFastWebView -sOutputFile=optimized.pdf input.pdf 

Вы можете проверить вывод с помощью pdfinfo optimized.pdf, где вы должны увидеть Optimized: yes в выводе

0 голосов
/ 30 сентября 2013

FlexPaper поддерживает разбиение больших документов PDF на страницы, так что загружаются только видимые страницы. У них есть два средства просмотра, одно с эффектами перелистывания страниц, а другое в качестве более классического средства чтения / просмотра документов с вариантами от бесплатного до коммерческого лицензирования.

http://flexpaper.devaldi.com/

0 голосов
/ 18 июня 2013

Два возможных обходных пути будут следующими:

Если PDF обычно не изменяется, вы можете установить cache expiry для ресурса (задайте в response), чтобы при открытии клиентами pdf /просмотр ресурса, кэшированного в их браузере, уменьшит время загрузки при втором посещении (в зависимости от того, как долго он истекает, конечно)

Другой вариант, если это возможно, попытаться загрузить файл pdf asynchronously,То есть сначала загружается другое содержимое вашей веб-страницы, затем будет загружен ваш pdf.

Или вы можете сделать комбинацию обоих.

0 голосов
/ 05 декабря 2011

Один из вариантов - использовать библиотеку pdf, например JPedal , для визуализации изображений страниц из PDF на стороне сервера, а затем (через AJAX) представлять изображения клиенту.

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