控制显示流PDF在浏览器中

本文关键字:浏览器 PDF 显示 控制 | 更新日期: 2023-09-27 18:04:52

使用这里和其他地方找到的信息,我已经成功地实现了一个应用程序,它将从我们的文档存储服务器中拉出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中弹出,这是可以接受的,但我们更希望它显示在网页上。出于安全原因,我们不希望将文件写入磁盘并从那里显示它。

是否有一种方法可以强制观看行为,或者我们可以使用第三方观看器来解决这个问题?

控制显示流PDF在浏览器中

作为最佳解决方案的替代方案,您可以添加'Content-Disposition'标头,使浏览器始终将其视为下载。

用法:

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

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

表示MIME协议Content-Disposition报头。