下载 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时,文件是正确的...但是当我得到响应时,文件是正确的。嘟嘟...
您需要通过设置 stream.Position = 0
来倒带流。
此外,Response.Write(stream)
只会打印stream.ToString()
.
相反,您应该调用stream.CopyTo(Response.OutputStream)
。