在后台生成pdf

时间:2009-05-01 11:33:48

标签: javascript ajax asp-classic

我有一个经典的asp页面,它生成一个PDF,用于浏览器。我想要做的是有一个加载页面,在完成后将PDF加载到后台加载到浏览器之前,实际上添加了一个很好的页面,向用户显示正在发生的事情。

我已经查看了雅虎进度条等内容,但我没有看到任何提供pdf的方式。

有人有什么建议吗?我相信这一定是以前做过的。

1 个答案:

答案 0 :(得分:0)

我找到了一种使用iframe的解决方案。它不是经典的asp,但我不明白它为什么不起作用。这是我找到的article

编辑:添加代码。

您的应用程序调用的容器页面:

<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>

然后,在BuildPDF.asp的某个地方,你有一个类似这样的函数,你可以随时调用你想要更新状态消息:

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

您在“viewFrame”中引用的页面是流式​​传输ContentType“application / pdf”的页面。再一次,我在ASP.Net中做到了这一点,但我认为没有理由说它不适用于经典的ASP。