以下代码在PC打开页面时发送完美的PDF文件,但PDF文件将无法正常工作,并且无论我用于打开它的应用程序如何,都会弹出“无效PDF”的消息(手机(Android,iOS)中的Adobe Reader,Chrome等:
public class PdfHttpHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
HttpResponse Response = context.Response;
string fileName = "somefile.pdf";
byte[] pdf = GetPDF();
// stream the pdf
Response.Buffer = false;
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "application/pdf";
Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
Response.BinaryWrite(pdf);
Response.Flush();
Response.End();
}
protected byte[] GetPDF()
{
var doc = new Document();
using (var ms = new MemoryStream())
{
using (var wri = PdfWriter.GetInstance(doc, ms))
{
doc.SetPageSize(iTextSharp.text.PageSize.A4);
doc.SetMargins(25f, 25f, 20f, 50f);
doc.Open();
/***
construct the pdf
***/
doc.Close();
return ms.ToArray();
}
}
}
}
我已经尝试了一切,但仍然没有结果。简单地说,如果移动设备打开了带有此处理程序的页面,则该文件已损坏。如果文件是在PC下载的,然后发送到移动设备,它将正常工作!这增加了混乱。
我在这里做错了什么?
更新
将处理程序转换为页面后,它运行正常。所以HttpHandler肯定有问题。仍然无法弄清楚它是什么。