Подтвердить что ты не робот

Как читать поток pdf в angularjs

Я получил следующий поток PDF с сервера: PDF STREAM

Как этот поток можно прочитать в AngularJS? Я попытался открыть это как PDF файл в новом окне, используя следующий код:

.success(function(data) {
   window.open("data:application/pdf," + escape(data));
 });

Но я не могу увидеть содержимое в открывшемся окне.

4b9b3361

Ответ 1

Я достиг этого, изменив свой код контроллера

$http.get('/retrievePDFFiles', {responseType: 'arraybuffer'})
       .success(function (data) {
           var file = new Blob([data], {type: 'application/pdf'});
           var fileURL = URL.createObjectURL(file);
           window.open(fileURL);
    });

Ответ 2

Обратите внимание на следующий код:

На стороне контроллера -

$http.get(baseUrl + apiUrl, { responseType: 'arraybuffer' })
          .success(function (response) {                  
             var file = new Blob([response], { type: 'application/pdf' });
             var fileURL = URL.createObjectURL(file);
             $scope.pdfContent = $sce.trustAsResourceUrl(fileURL);
           })
           .error(function () {                        
           });

На стороне HTML:

<div ng-controller="PDFController" class="modal fade" id="pdfModal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg">
    <div class="modal-content" onloadstart="">
        <object data="{{pdfContent}}"  type="application/pdf" style="width:100%; height:1000px" />
    </div>
</div>

Также вы можете пойти с Angular ng-pdfviewer и просмотреть свой pdf файл, используя его js файлы.

Ответ 3

Посмотрите PDF.JS. Это клиентская библиотека javascript, которая может извлекать поток PDF и отображать его на стороне клиента. Angular не может прочитать PDF, так что это не проблема Angular.

Ответ 4

Java: метод получения

BLOB pdfData = getBlob_Data;
response.setContentType(pdfData.getContentType());
response.setHeader(ApplicationLiterals.HEADER_KEY_CONTENT, "attachment;     filename=FileName.pdf");
response.getOutputStream().write(pdfData.getBinaryData());
response.getOutputStream().flush();

Ответ 5

Проблема с использованием config.responseType заключается в том, что служба $http по-прежнему запускает responseTransformer по умолчанию и пытается преобразовать ответ в JSON. Кроме того, вы отправляете заголовки принятия по умолчанию. Вот (непроверенная) альтернатива:

$http.get('/retrievePDFFiles', {
    headers: { Accept: "application/pdf"},  
    transformResponse: function(data) {
        return new Blob([data], {type: 'application/pdf'});
    }}).success(function (data) {
           var fileURL = URL.createObjectURL(data);
           window.open(fileURL);
    });