我在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 ...
答案 0 :(得分:3)
您需要设置stream.Position = 0
。
此外,Response.Write(stream)
只会打印stream.ToString()
。
相反,您应该致电stream.CopyTo(Response.OutputStream)
。