使浏览器能够在大型PDF文件上快速呈现初始页面

本文关键字:浏览器 大型 文件 PDF | 更新日期: 2023-09-27 18:03:50

我的应用程序目前允许直接链接到服务器上的PDF文件,但这些文件现在需要保护,由于安全考虑,直接链接将不得不逐步淘汰。

我尝试了以下几行发送PDF文件到客户端。

        Response.Clear();
        Response.ContentType = "Application/pdf";
        Response.WriteFile(filepath);
        Response.End();

但是这里有一个陷阱。

当链接PDF文件时,浏览器会立即呈现前几个页面,同时下载其余页面。但是使用上面的方法,浏览器要等到整个文件下载完成后才继续呈现PDF。

那么有没有一种方法可以欺骗浏览器来模拟打开一个直接链接的PDF?

使浏览器能够在大型PDF文件上快速呈现初始页面

阅读你的帖子后,我意识到我的应用程序有相同的行为(虽然给定的文件的典型大小和使用的格式还没有成为一个问题-至少还没有…)经过一些研究,您必须根据您想要引入的复杂性从几个选项中进行选择:

如果你想要一个更简单的实现,你需要稍微改变一下你的方法,设置一个循环,将一定量的文件读入内存中的缓冲区,然后对该缓冲区执行Response.Write。在循环中,您将执行Response.Flush以将该数据推送给客户端。由于这是同步的,因此必须等到刷新完成后才能下推文件的下一个块。但是,如果主要目标是获得最初的几个块,以便客户机应用程序可以开始使用它们,那么这可能满足您的需求。

如果你想要更好的服务器端可伸缩性,并愿意接受更多的复杂性,你需要探索使用Response.BeginFlush。我相信异步编写是在。net 4.5中引入的。这里有一个链接,你应该开始:

http://www.slideshare.net/pragyanshis/asynchronous-reading-and-writing-http-r-equest

我正在为我自己的应用程序探索这两种方法的"to do"列表…