#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. Это решено? У меня такая же проблема.