Создать PDF в фоновом режиме - PullRequest
0 голосов
/ 01 мая 2009

У меня есть классическая страница asp, которая генерирует PDF и передает его в браузер. То, что я хотел бы сделать, - это загрузить страницу, которая загружает PDF в фоновом режиме, прежде чем отправить его в браузер, когда это будет завершено, по сути, добавив приятную страницу, указывающую пользователю, что что-то происходит.

Я смотрел на такие вещи, как индикатор выполнения Yahoo, но я не видел, как потом подать pdf вверх.

У кого-нибудь есть предложения? Я уверен, что это должно быть сделано раньше.

1 Ответ

0 голосов
/ 01 мая 2009

Я нашел решение для этой ситуации, которое использует 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...