Show loading image when pdf rendering
Posted
by Pankaj
on Stack Overflow
See other posts from Stack Overflow
or by Pankaj
Published on 2010-06-18T04:13:17Z
Indexed on
2010/06/18
4:23 UTC
Read the original article
Hit count: 333
I am displaying pdf on my page like this
<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>
and Controller function are
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;
}
Now my problem is function on controller taking 10 to 20 second to process pdf,
data="/Customer/GetPricedMaterialPDF?projID=<%= ViewData["ProjectID"]%>"
at that time my page shows blank, which i don't want. i want to show loading image at that time. How can i do this...
© Stack Overflow or respective owner