2009-05-01 59 views
0

我有一个经典的asp页面,它生成一个PDF将它提供给浏览器。我想要做的是有一个加载页面,该页面在完成后将其加载到浏览器中之前加载PDF,基本上添加了一个很好的页面,指示用户正在发生某些事情。在后台生成pdf

我已经看过像雅虎进度条之类的东西,但我没有看到任何提供PDF的方法。

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

回答

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中工作。

+0

这就是正确的想法,但被调用的经典asp页面会返回Response.ContentType =“application/pdf”,因此无法将脚本标记输出到此页面。 – 2009-05-01 12:22:12