Pregunta

Tengo una página asp clásica que genera un PDF que lo sirve en el navegador. Lo que me gustaría hacer es tener una página de carga que cargue el PDF en segundo plano antes de servirlo en el navegador cuando esté completo, esencialmente agregando una buena página que indique al usuario que algo está sucediendo.

He visto cosas como la barra de progreso de Yahoo, pero no vi ninguna forma de servir el pdf.

¿Alguien tiene alguna sugerencia? Estoy seguro de que esto debe haberse hecho antes.

¿Fue útil?

Solución

Encontré una solución para esta situación que usa iframes. No es asp clásico, pero no veo por qué no funcionaría. Aquí está el artículo que encontré .

EDITAR: código agregado.

Página de contenedor llamada por su aplicación:

<head runat="server">
    <script language="javascript" type="text/javascript">
        function BuildPDF() {
            var iframe = document.createElement("iframe");
            iframe.src = "BuildPDF.asp?" + <whatever args you need>;
            iframe.style.display = "none";
            document.body.appendChild(iframe);
        }

        function UpdateProgress(message) {
            document.getElementById('txtStatus').value = message;
        }

        function SetDisplayFileName(fileName) {
            var viewFrame = document.createElement("iframe");
            viewFrame.id = "viewFrame";
            viewFrame.src = "WhateverTheNameOfYourPDFViewASPPageAndArgs";
            viewFrame.style.width = '100%';
            viewFrame.style.height = document.documentElement.clientHeight - 20;
            document.body.appendChild(viewFrame);
        }

        function ResizeFrame() {
            var viewFrame = document.getElementById("viewFrame");
            viewFrame.style.height = document.documentElement.clientHeight - 20;
        }
    </script>
</head>
<body onload="BuildPDF();" onresize="ResizeFrame();">
    <form id="form1" runat="server">
    <input type="text" id="txtStatus" style="width:80%; font-family: Tahoma, Verdana; font-size: small; font-weight: bold;" readonly="readonly" />
    <br />    
    </form>
</body>

Luego, en algún lugar de su BuildPDF.asp, tiene una función como esta a la que puede llamar en cualquier momento que desee actualizar el mensaje de estado:

function UpdateProgress(message)
    Response.Write("<script>parent.UpdateProgress('" & message & "');</script>")
    Response.Flush()
end function

La página a la que hace referencia en el " viewFrame " es su página que transmite el ContentType " application / pdf. " Nuevamente, hice esto en ASP.Net, pero no veo ninguna razón por la que no funcionaría en ASP clásico.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top