下载PDF而不保存在ASP.net Handler中

时间:2012-04-26 14:46:28

标签: c# asp.net pdf save handler

我在asp.net应用程序中有一个处理程序。当出现某种请求时,我希望用户获得下载窗口,我将 PDF 流放入其中。我不希望PDF保存在内存中。 我有以下代码,但它无法打开,说pdf文件已损坏,无法打开它。 如果你认为我的目标不好,请告诉我实现目标的其他方法。

 MemoryStream stream = new MemoryStream();
                CreatePFD(T.Text, stream);

                context.Response.Write(stream);


                context.Response.ContentType = "application/pdf";
                context.Response.AddHeader("content-disposition", "attachment; filename=" + "Nots__Saved__FIle__fileName.pdf");

现在我有了这段代码:

Document Doc = new Document(PageSize.A4,80,50,30,65);                 System.IO.Stream outputStream = new System.IO.FileStream(@“C:\ inetpub \ wwwroot \ c \ wefwe.pdf”,System.IO.FileMode.OpenOrCreate);

            PdfWriter.GetInstance(Doc, outputStream);

            Doc.Open();

            List<IElement> htmlarraylist = iTextSharp.text.html.simpleparser.HTMLWorker.ParseToList(new StringReader(T.Text), null);
            for (int k = 0; k < htmlarraylist.Count; k++)
            {
                Doc.Add((IElement)htmlarraylist[k]);
            }

            outputStream.CopyTo(context.Response.OutputStream);
            Doc.Close();

            context.Response.ContentType = "application/pdf";
            context.Response.AddHeader("content-disposition", "attachment; filename=" + "Nots__Saved__FIle__fileName.pdf");

当我保存pdf时,文件正确... 但是当我收到回复时,文件是正确的。 demaged ...

1 个答案:

答案 0 :(得分:3)

您需要设置stream.Position = 0

来回放信息流

此外,Response.Write(stream)只会打印stream.ToString()

相反,您应该致电stream.CopyTo(Response.OutputStream)