iTextShap使用HttpHandler制作的流式PDF将损坏的PDF发送到移动设备

时间:2016-04-12 19:18:58

标签: asp.net mobile itextsharp httphandler

以下代码在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肯定有问题。仍然无法弄清楚它是什么。

0 个答案:

没有答案