在BinaryWrite之后的一段时间内,Pdf没有打开

时间:2013-07-12 12:17:02

标签: c# asp.net pdf itextsharp

我创建了编辑现有PDf内容的功能(添加了一些文本和图像),之后我打开这个pdf文件进行打印或下载,我正在使用此代码 Pdf在BinaryWrite

之后的某个时间没有开放
byte[] outBuf = outStream1.GetBuffer();
HttpContext.Current.Response.Expires = 0;
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.AddHeader("content-disposition",  "attachment;filename="test.pdf");
HttpContext.Current.Response.ContentType = "application/pdf";
HttpContext.Current.Response.ContentEncoding = new System.Text.UTF8Encoding();
HttpContext.Current.Response.BinaryWrite(outBuf);
outStream.Close();
HttpContext.Current.Response.End();

它在本地计算机或开发服务器上运行良好,并且在服务器上运行一段时间。 在服务器上一段时间后它打开空白页面。浏览器缓存清除或临时文件清除后,它的工作原理 我没有得到它的问题可能是一些客户端浏览器内存问题。 但如果它是浏览器内存问题,那么它也应该在本地出现,因为我使用相同的浏览器。

请给我一些想法或解决方案,以便我可以对此事进行排序。

2 个答案:

答案 0 :(得分:1)

GetBuffer method只返回内存流的内容,如果它是从一个字节数组开始创建的只读流。否则它返回内部缓冲区,最后可能包含未使用的字节。

使用ToArray method获取内存流的内容,仅此而已:

byte[] outBuf = outStream1.ToArray();

答案 1 :(得分:0)

在某些时候触发某些浏览器将您的流视为PDF的另一件事是向您的URL附加一些伪参数,使其以“.pdf”结尾。我不确定在你的情况下这是否真的有必要,因为你将'content-disposition'设置为'attachment'。但它不会受到伤害。