Показывать загрузку изображения при рендеринге PDF - PullRequest
1 голос
/ 18 июня 2010

Я отображаю pdf на своей странице следующим образом:

<object data="/Customer/GetPricedMaterialPDF?projID=<%= ViewData["ProjectID"]%>"
    type="application/pdf" width="960" height="900" style="margin-top: -33px;">
    <p>
        It appears you don't have a PDF plugin for this browser. No biggie... you can <a
            href="/Customer/GetPricedMaterialPDF?projID=<%= ViewData["ProjectID"]%>">click
            here to download the PDF file. </a>
    </p>
</object>

и функции контроллера равны

 public FileStreamResult GetPricedMaterialPDF(string projID)
        {
            System.IO.Stream fileStream = GeneratePDF(projID);
            HttpContext.Response.AddHeader("content-disposition",
               "attachment; filename=form.pdf");
            return new FileStreamResult(fileStream, "application/pdf");

        }



private System.IO.Stream GeneratePDF(string projID)
        {
            //create your pdf and put it into the stream... pdf variable below
            //comes from a class I use to write content to PDF files

            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            Project proj = GetProject(projID);
            List<File> ff = proj.GetFiles(Project_Thin.Folders.IntegrationFiles, true);
            string fileName = string.Empty;
            if (ff != null && ff.Count > 0 && ff.Where(p => p.AccessToUserID == CurrentCustomer.CustomerID).Count() > 0)
            {
                ff = ff.Where(p => p.AccessToUserID == CurrentCustomer.CustomerID).ToList();
                foreach (var item in ff)
                {
                    fileName = item.FileName;
                }

                byte[] bArr = new byte[] { };
                bArr = GetJDLFile(fileName);
                ms.Write(bArr, 0, bArr.Length);
                ms.Position = 0;
            }
            return ms;
        }

Теперь моя проблема в том, что на контроллере требуется 10-20 секунд для обработки pdf,

data="/Customer/GetPricedMaterialPDF?projID=<%= ViewData["ProjectID"]%>"

в то время моя страница была пустой, чего я не хочу.я хочу показать загрузку изображения в то время.Как я могу это сделать ...

1 Ответ

0 голосов
/ 18 июня 2010

Если вы поместите <div> на свою страницу точно в положение элемента <object> с меньшим значением z-index, чтобы он полностью покрывался последним, вам может повезти, когда его увидит пользовательский агент. до тех пор, пока он не отправляет заголовок (и не дает контроль над назначенной поверхностью для чтения PDF). Вы можете поместить свое сообщение или (анимацию) в него.

Если вы поместите изображение рядом с <object>, оно будет отображаться вечно, поскольку вы не можете определить, был ли передан полный файл PDF или нет.

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