Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在后台生成pdf_Javascript_Ajax_Asp Classic - Fatal编程技术网

Javascript 在后台生成pdf

Javascript 在后台生成pdf,javascript,ajax,asp-classic,Javascript,Ajax,Asp Classic,我有一个经典的asp页面,它生成一个PDF文件,并将其提供给浏览器。我想做的是有一个加载页面,它在后台加载PDF,然后在完成后将其提供给浏览器,本质上是添加一个漂亮的页面,向用户指示正在发生的事情 我看过雅虎进度条之类的东西,但我没有看到任何方法可以提供pdf 有人有什么建议吗?我确信这一定是以前做过的。我找到了一个使用iFrame的解决方案。这不是经典的asp,但我不明白为什么它不起作用。这是我找到的 编辑:添加代码 应用程序调用的容器页面: <head runat="server"&g

我有一个经典的asp页面,它生成一个PDF文件,并将其提供给浏览器。我想做的是有一个加载页面,它在后台加载PDF,然后在完成后将其提供给浏览器,本质上是添加一个漂亮的页面,向用户指示正在发生的事情

我看过雅虎进度条之类的东西,但我没有看到任何方法可以提供pdf


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

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

编辑:添加代码

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

<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应用程序/pdf的页面。同样,我是在ASP.Net中这样做的,但是我看不出为什么它不能在经典ASP中工作。

这是正确的想法。但是,被称为returns Response.ContentType=application/pdf的经典ASP页面不可能将脚本标记输出到此页面。在这种情况下,您将有三个页面:一个包含两个iFrame的容器页面,每个iframe对应一页。一个iframe页面将有您的进度更新。另一个会有你的回复。ContentType=application/pdf。