我试图使用embed标签显示PDF。 PDF是从.NET中的HTTPHandler加载的。
PDF的显示工作正常,但我想知道文件加载和显示的时间,所以我可以运行JavaScript函数。
我已尝试在onloadeddata,onload,onloadstart,onended和onplay的事件处理程序中绑定,但它们都没有被击中。
我想做的是什么?如果是这样,我可以抓住什么事件?
<embed src=@virtualPath 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 :(得分:0)
整个PDF文件可能永远不会完全加载...特别是如果PDF查看器是Adobe Reader,但任何能够利用&#34;快速Web查看&#34;的PDF查看器也是如此。 PDF文件是随机访问,符合标准的查看器只会请求显示所请求页面所需的服务器字节。这就是为什么你可以在浏览器中打开PDF的原因,例如,立即跳转到1000页文档的第500页而不等待整个下载。 Web优化的PDF专门设计为不做你想做的事。
也就是说,您可以尝试不在HTML中设置embed元素的src属性,并使用AJAX(或其他东西)将PDF作为blob获取,然后在&#34;完成后设置src属性&#34 ;事件被解雇。然后,您知道在之前它已经开始显示整个文件。