Я нашел решение для этой ситуации, которое использует iframes. Это не классический жерех, но я не понимаю, почему это не сработает. Вот статья , которую я нашел.
РЕДАКТИРОВАТЬ: добавлен код.
Страница контейнера, вызванная вашим приложением:
<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.