Как показать экран загрузки перед PDF документом - PullRequest
4 голосов
/ 19 ноября 2010

В нашем приложении есть ссылки на динамически генерируемые PDF-документы. Ссылки выглядят примерно так: host / 22-5 / file_3136.pdf , поэтому для браузера это выглядит как статический PDF-документ. При нажатии на ссылку открывается новое окно. Это окно получает только документ PDF (без HTML) с заголовками, такими как:

Content-Disposition: inline; filename=file_3136.pdf
Content-Type: application/pdf

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

Теперь мы хотим добавить экран загрузки, который будет отображаться во время создания PDF. Каков наилучший способ сделать это, сохранив текущие функциональные возможности?

Один из вариантов - показать экран загрузки и затем перенаправить в PDF после завершения генерации. Это потребует от меня сохранения PDF на сервере в течение некоторого времени. В настоящее время они удаляются сразу после отправки ответа.

Другой вариант - отправить HTML и javascript (для отображения страницы загрузки) с тегом <embed>, <iframe> или <object>, указывающим на pdf на сервере.

Какой лучший подход? Что работает с большинством браузеров?

Ответы [ 4 ]

0 голосов
/ 20 ноября 2010

Если вы линеаризируете PDf, вы также можете очень быстро отобразить первую страницу. Я написал 2 статьи о линеаризованном PDF в http://www.jpedal.org/PDFblog/2010/11/do-i-have-to-download-the-whole-pdf-if-i-view-it-across-the-internet/ и http://www.jpedal.org/PDFblog/2010/02/linearized-pdf-files/

0 голосов
/ 20 ноября 2010

HTML перенаправляет. Вы создаете страницу, которая перенаправляет «на себя» каждые несколько секунд. Когда PDF-файл готов, вместо этого вы создаете перенаправление на него.

0 голосов
/ 20 ноября 2010

Для фактической предварительной загрузки файла PDF, чтобы создать впечатление мгновенной загрузки.на странице, предшествующей связанной с PDF страницей, добавьте сценарий предварительной загрузки:

<img id="pdfLoader" src="preloader.jpg"/>

Вы можете получить изображение предварительного загрузчика из ajaxload.info

<script language="javascript" type="text/javascript">
//<![CDATA[
<!-- 
var pdfLoader = document.getElementById("pdfLoader");
pdfLoader.src = "http://mysite.com/mypdf.pdf";
//-->
//]]>
</script>

КодПомещенный выше между и на странице, содержащей ссылку на файл .pdf (или html-файл с .pdf в нем), инструктирует браузер загрузить файл pdf в кеш браузера, но просто оставьте его там.(filetype является несоответствующим image () удобно, используйте тот же сценарий для любого типа файла, поскольку он никогда не будет отображаться) загрузка происходит после полной визуализации страницы, поэтому не задерживает текущую страницу.щелкнув ссылку на файл .pdf (или html-страницу), браузер находит файл .pdf в кеше браузера и не загружает его, а отображает из кэша с явно завышенной скоростью загрузки.

В браузерах с отключенным JavaScript, функция изящно ухудшается

0 голосов
/ 19 ноября 2010

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

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