下载 PDF 而不保存在处理程序 ASP.net

本文关键字:处理 程序 ASP net 存在 保存 PDF 下载 | 更新日期: 2023-09-27 18:32:24

我在 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");

现在我有这个代码:

文档文档 = 新文档(页面大小.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时,文件是正确的...但是当我得到响应时,文件是正确的。嘟嘟...

下载 PDF 而不保存在处理程序 ASP.net

您需要通过设置 stream.Position = 0 来倒带流。

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

相反,您应该调用stream.CopyTo(Response.OutputStream)