0

我创建了编辑现有 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();

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

请给我一些想法或解决方案,以便我可以整理我们的这个东西。

4

2 回答 2

1

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

使用ToArray方法来准确获取内存流的内容,仅此而已:

byte[] outBuf = outStream1.ToArray();
于 2013-07-12T12:35:10.780 回答
0

有时会触发某些浏览器将您的流视为 PDF 的另一件事是将一些虚拟参数附加到您的 URL,以便它以“.pdf”结尾。我不确定这在您的情况下是否真的有必要,因为您将“内容处置”设置为“附件”。不过也不会痛。

于 2013-07-13T09:38:42.607 回答