نمایش یک فایل PDF پویا در یک iframe در ASP.NET
نویسنده: وحید نصیری
تاریخ: ۱۳۹۱/۱۲/۲۸ ۱۱:۲۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
using System.IO;
using System.Net.Mime;
using System.Web;
namespace WebApplication
{
public class PdfHandler : IHttpHandler
{
private static byte[] inMemoryFile()
{
//تولید پویای فایل در حافظه و یا حتی خواندن از یک نمونه موجود
return File.ReadAllBytes(@"D:\path\DynamicCrosstabSampleRpt.pdf");
}
public void ProcessRequest(HttpContext context)
{
var pdf = inMemoryFile();
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
context.Response.ContentType = MediaTypeNames.Application.Pdf;
context.Response.AddHeader("Content-Length", pdf.Length.ToString());
context.Response.AddHeader("content-disposition", "attachment;filename=test.pdf");
context.Response.Buffer = true;
context.Response.Clear();
context.Response.OutputStream.Write(pdf, 0, pdf.Length);
context.Response.OutputStream.Flush();
context.Response.OutputStream.Close();
context.Response.End();
}
public bool IsReusable
{
get { return false; }
}
}
}<iframe width="100%" src="PdfHandler.ashx" height="200px"></iframe>
Response.AddHeader("content-disposition", "inline;filename=test.pdf"); .Generate(data =>
{
fileName = HttpUtility.UrlEncode(fileName, Encoding.UTF8);
data.FlushInBrowser(fileName, FlushType.Inline);
}); // creating an in-memory PDF file public void ProcessRequest (HttpContext context) {
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("serverpath" + "filename");
request.UsePassive = false;
request.Credentials = new NetworkCredential("user", "pass");
// byte[] fileBytes = null;
using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
{
using (Stream responseStream = response.GetResponseStream())
{
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
context.Response.ContentType = MediaTypeNames.Application.Pdf;
context.Response.AddHeader("content-disposition", "attachment; filename=test.pdf");
context.Response.BufferOutput = false; // to prevent buffering
//context.Response.Buffer = true;
context.Response.Clear();
byte[] buffer = new byte[262144];
int bytesRead = 0;
while ((bytesRead = responseStream.Read(buffer, 0, buffer.Length)) > 0)
{
context.Response.OutputStream.Write(buffer, 0, bytesRead);
}
context.Response.OutputStream.Flush();
context.Response.OutputStream.Close();
context.Response.End();
}
}
request.Abort();
context.ApplicationInstance.CompleteRequest();
}