【问题标题】:Download PDF without saving in ASP.net Handler下载 PDF 而不保存在 ASP.net 处理程序中
【发布时间】:2012-05-07 07:52:41
【问题描述】:

我在 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 时,文件是正确的... 但是当我得到响应时,文件是正确的。被破坏了……

【问题讨论】:

  • 那应该是MemoryStream
  • 是的。我犯了一个错误

标签: c# asp.net pdf save handler


【解决方案1】:

你需要通过设置stream.Position = 0来回退流。

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

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

【讨论】:

  • 仅适用于 .NET 4 及更高版本。不过,如果您需要,还有许多其他流复制功能。
  • 我认为副本对我没有用,除了我使用 4.0 网络之外,还有一些像这样的错误: Length = 'context.Response.OutputStream.Length' 抛出类型为 'System.NotSupportedException 的异常'
  • @levanlevi:堆栈跟踪是什么?
  • @SLaks 那是我的错误,我关闭了。现在这不是问题,但即使现在我也无法获得正确的 pdf 文件。
  • 复制前需要关闭并倒带。
猜你喜欢
  • 2016-02-26
  • 2011-03-27
  • 1970-01-01
  • 2018-01-08
  • 1970-01-01
  • 2012-05-12
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
相关资源
最近更新 更多