2017-02-13 16 views
1

Я пытаюсь отобразить PDF с помощью тега embed. PDF загружается из HTTPHandler в .NET.Как узнать, когда PDF загружается с помощью встроенного тега

Отображение PDF прекрасно работает, но я хочу знать, когда файл будет загружен и отображен, поэтому я могу запустить функцию JavaScript.

Я попытался привязать обработчик события для onloadeddata, onload, onloadstart, onended и onplay, но никто из них никогда не попадает.

Является ли это тем, что я хочу сделать возможным? Если да, то какое событие я могу поймать?

<embed [email protected] id="pdfiFrame" type="application/pdf" alt="pdf" style="width: 100%; height: 99.4%;" frameborder="0" pluginspage="http://www.adobe.com/products/acrobat/readstep2.html" onloadeddata='tryThis;' onload="tryThis;" onloadstart="tryThis;", onended="tryThis;" onplay="tryThis;"/> 

function tryThis(arg) { 
    alert("here = " + arg); 
} 

Путь определяется в переменной в представлении MVC Razor.

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

ответ

0

Весь файл PDF может никогда не загружаться полностью ... особенно если программа просмотра PDF является Adobe Reader, но также может быть верной с любым средством просмотра PDF, способным использовать «быстрый веб-просмотр». Файлы PDF представляют собой произвольный доступ, и соответствующий просмотрщик запрашивает только байты с сервера, которые необходимы для отображения запрошенной страницы. Вот почему вы можете открыть PDF в браузере и, например, сразу перейти на страницу 500 1000-страничного документа, не дожидаясь загрузки всего. Веб оптимизированный PDF был разработан специально для не делать то, что вы хотите.

Это означает, что вы не можете установить свойство src элемента embed в своем HTML и использовать AJAX (или что-то еще) для извлечения PDF-файла в виде блоба, а затем установить свойство src после запуска события «done». Тогда вы знаете, что у вас был весь файл до, который он даже начал отображать.

+0

Вы поднимаете интересный момент о том, чтобы не обязательно загружать все это. То, что я действительно хочу сделать, это установить на странице показатель модальности прогресса, пока документ не будет готов для просмотра. Это не означает, что все это есть, только первая страница видна. Любые мысли о том, как сделать эту часть? – ChrisC

+0

Adobe Reader будет делать это, но это довольно угадано, если только он не оптимизирован для веб-сайтов, и вероятность того, что он является программой просмотра PDF по умолчанию, в наши дни довольно низок. Проблема, с которой вы столкнулись, заключается в том, что обычный просмотрщик PDF не знает, какие байты из файла необходимы для любой страницы. Объекты являются случайным доступом, и объект страницы может ссылаться на любое количество других объектов, которые могут быть общими или быть уникальными для этой страницы. Зритель узнает, что объект ссылается на другой набор объектов, когда он его читает. – joelgeraci

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

  • Нет связанных вопросов^_^