Управление отображением потокового PDF в браузере

1

Используя информацию, найденную здесь и в других местах, я успешно реализовал приложение, которое вытащит PDF с нашего сервера хранения документов, передаст его через наш брандмауэр и отобразит его в фрейме в клиентском веб-браузере. 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
stream

1 ответ

0
Лучший ответ

В качестве альтернативы оптимальному решению вы можете добавить заголовок Content-Disposition, чтобы браузер всегда рассматривал его как загрузку.

Применение:

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

Это также может быть интересно изучить, хотя я никогда не использовал его: System.Net.Mime.ContentDisposition

Представляет заголовок Content-Disposition протокола MIME.

  • 0
    Некоторое дополнительное чтение: stackoverflow.com/questions/1012437/…
  • 1
    Оказывается, это на самом деле является оптимальным решением для нас. По крайней мере, так решили лица, принявшие решение, попробовав. Еще раз спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню