在浏览器中控制流式PDF的显示

时间:2014-05-22 18:27:48

标签: c# asp.net pdf stream

使用此处和其他地方的信息我已经成功实施了一个应用程序,该应用程序将从我们的文档存储服务器中提取PDF,将其流式传输到防火墙并在客户端的Web浏览器的框架中显示。使用以下代码将PDF加载到页面中,该页面是iframe的源。

int ImageID;
if (int.TryParse(Request.QueryString["ImageID"], out ImageID))
{
  FileTransferService.FileTransferClient client = new FileTransferService.FileTransferClient();

  Byte[] documentStream = client.GetFile(Classes.AppSettings.pwServer, Classes.AppSettings.pwDatabase, Classes.AppSettings.pwUsername, Classes.AppSettings.pwPassword, Classes.AppSettings.pwCabinet, ImageID, "", "");
  Response.ContentType = "application/pdf";
  Response.BinaryWrite(documentStream);
}

这在大多数情况下工作正常,但是由于客户端上的Acrobat Reader插件设置,PDF有时会在Acrobat Reader中打开而不是在网页中显示,从而使我们的页面在PDF中留下空洞应该。我已经搜索了我们可以在应用中使用的第三方PDF查看器,但没有成功。他们要么不接受流作为源,要么图像质量不可接受。如果我们可以强制它始终在Acrobat Reader中弹出,这是可以接受的,但我们更喜欢它显示在网页中。出于安全原因,我们不想将文件写入磁盘并从那里显示它。

是否存在一种强制观看行为的方法或者我们可以使用的第三方观看者可以解决此问题?

1 个答案:

答案 0 :(得分:0)

作为最佳解决方案的替代方案,您可以添加'内容配置'标题使浏览器始终将其视为下载。

用法:

Content-Disposition: attachment; filename="example.pdf"

这可能也值得研究,尽管我从未使用它: System.Net.Mime.ContentDisposition

  

表示MIME协议Content-Disposition标头。