我创建了编辑现有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();
它在本地计算机或开发服务器上运行良好,并且在服务器上运行一段时间。 在服务器上一段时间后它打开空白页面。浏览器缓存清除或临时文件清除后,它的工作原理 我没有得到它的问题可能是一些客户端浏览器内存问题。 但如果它是浏览器内存问题,那么它也应该在本地出现,因为我使用相同的浏览器。
请给我一些想法或解决方案,以便我可以对此事进行排序。
答案 0 :(得分:1)
GetBuffer
method只返回内存流的内容,如果它是从一个字节数组开始创建的只读流。否则它返回内部缓冲区,最后可能包含未使用的字节。
使用ToArray
method获取内存流的内容,仅此而已:
byte[] outBuf = outStream1.ToArray();
答案 1 :(得分:0)
在某些时候触发某些浏览器将您的流视为PDF的另一件事是向您的URL附加一些伪参数,使其以“.pdf”结尾。我不确定在你的情况下这是否真的有必要,因为你将'content-disposition'设置为'attachment'。但它不会受到伤害。