una pagina imprimir imprime guardar exportar desde descargar crear convertir con como chrome activar html pdf embed

pagina - imprimir html en pdf



HTML y PDF incrustados (8)

"El contenido dentro de una etiqueta se muestra cuando un objeto se está cargando, pero aún no ha terminado".

Así que pon tu hilandera ahí y debería funcionar bien para ti. Y no tendrás que escribir ningún JavaScript.

src: http://en.wikibooks.org/wiki/XHTML/XHTML_Objects

Incrustaré un PDF en una página web con el siguiente html:

<object id="pdf" classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="1024" height="600"> <param name="SRC" value="/GetDoc.ashx?SOID=<%=Html.Encode(Model.OrderID)%>" /> <embed src="/GetDoc.ashx?SOID=<%=Html.Encode(Model.OrderID)%>" width="1024" height="600"> <noembed> Your browser does not support embedded PDF files. </noembed> </embed> </object>

Los PDF pueden tardar un poco en cargarse, así que me gustaría ocultar el objeto y mostrar un mensaje de carga / gif hasta que esté completamente cargado, de modo que el usuario no esté mirando una pantalla en blanco.

Todo lo que realmente necesito es una forma de saber cuándo el objeto está completamente cargado. Probé el evento ''onload'' pero nunca parece ser despedido.

Estoy empezando a pensar que quizás no sea posible, pero nunca está de más preguntar ...


El siguiente código funciona.

<div style="background: transparent url(loading.gif) no-repeat"> <object height="1250px" width="100%" type="application/pdf" data="aaa.pdf"> <param value="aaa.pdf" name="src"/> <param value="transparent" name="wmode"/> </object> </div>


Estoy cargando el PDF con jQuery ajax en el caché del navegador. Luego creo elementos integrados con datos que ya están en la memoria caché del navegador.

var url = "http://example.com/my.pdf"; // show spinner $.mobile.showPageLoadingMsg(''b'', note, false); $.ajax({ url: url, cache: true, mimeType: ''application/pdf'', success: function () { // display cached data $(scroller).append(''<embed type="application/pdf" src="'' + url + ''" />''); // hide spinner $.mobile.hidePageLoadingMsg(); } });

También debe configurar sus encabezados http correctamente.

HttpContext.Response.Expires = 1; HttpContext.Response.Cache.SetNoServerCaching(); HttpContext.Response.Cache.SetAllowResponseInBrowserHistory(false); HttpContext.Response.CacheControl = "Private";


Ninguna de las recomendaciones es válida, porque DOM se carga antes de que se cargue el contenido PDF. Así que DOM no puede controlar el contenido de ActiveX


No sé por qué todos lo hacen tan difícil.

<object data="yourfile.pdf" style="background: transparent url(AnimatedLoading.gif) no-repeat center;" type="application/pdf" />


Querrá algo como la función document.ready() jQuery. Para navegadores que no sean IE, puede registrar un controlador para el evento DOMContentLoaded , y se DOMContentLoaded su función de controlador después de que se hayan cargado todas las imágenes y objetos. Para IE, debe verificar continuamente la propiedad document.readyState y esperar a que se "complete" .

Si está usando jQuery, han hecho el trabajo duro por usted, así que todo lo que tiene que hacer es:

$(document).ready(function() { //take away the "loading" message here });

Si no quieres usar jquery, deberías hacer algo como:

addEventListener(''DOMContentLoaded'', function() { //take away the "loading" message here }); function waitForIE() { if (!document.all) return; if (document.readyState == "complete") { //take away the "loading" message here } else { setTimeout(waitForIE, 10); } } waitForIE();


$(document).ready(function() { });

no funcionaría ya que esto se dispara principalmente en document.readyState == interactive lugar de en document.readyState == complete .

Si pones un temporizador con este cheque ( document.readyState == "complete" ) ¡definitivamente funcionaría!


<embed onload=''alert("I should be called")''></embed>