Просмотр PDF не отображается в IE

#javascript #html #angularjs #pdf #cross-browser

#javascript #HTML #angularjs #PDF #кросс-браузерный

Вопрос:

Я пытаюсь отобразить PDF-файл в диалоговом окне, используя URL-адрес большого двоичного объекта, заданный переменной области видимости angularjs. Это отлично работает в случае Google Chrome, но, похоже, не работает в IE, Edge или Firefox (последняя версия).

Контроллер C #:

 HttpResponseMessage result = null;

Stream stream = new MemoryStream(fileContent);

result = Request.CreateResponse(HttpStatusCode.OK);

result.Content = new StreamContent(stream);

result.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");

result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");

result.Content.Headers.ContentDisposition.FileName = fileName;

result.Content.Headers.Add("x-filename", fileName);

return result;
 

-> Здесь ‘fileContent’ — это массив байтов.

Угловой контроллер:

 var data = $.param({
                ID: fileRowID
            });            

$http.post('api/getFileData', data, { responseType: 'arraybuffer' }).success(function (response) {
    var file = new Blob([(data)], { type: 'application/pdf' });
    var fileURL = URL.createObjectURL(file);
    $scope.fileContent = $sce.trustAsResourceUrl(fileURL); 
})
 

HTML:

 < object style="width:100%; height:600px" type="application/pdf" data="{{fileContent}}" >< /object >
 

Этот фрагмент кода идеально работает только в Chrome. <object> и <embed> не работает с IE, Edge или Firefox. Я также пытался <iframe> , но URL-адрес большого двоичного объекта не работает с атрибутом ‘src’ <iframe> . Я не хочу использовать ‘msSaveBlob’ или ‘msSaveOrOpenBlob’, поскольку требуется отображать PDF, а не загружать.

Комментарии:

1. У меня все еще нет решения по этому вопросу.. Любое предложение будет полезно.

2. Это решено? У меня такая же проблема.