Comment lire le flux pdf en angularjs

j'ai obtenu le flux de PDF suivant d'un serveur:PDF STREAM

comment ce flux peut-il être lu dans AngularJS? J'ai essayé d'ouvrir ce fichier PDF dans une nouvelle fenêtre en utilisant le code suivant:

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

mais je suis incapable de voir le contenu dans la fenêtre ouverte.

28
demandé sur tomtomssi 2014-09-11 11:47:13

5 réponses

j'ai obtenu ceci en changeant mon code de controller

$http.get('/retrievePDFFiles', {responseType: 'arraybuffer'})
       .success(function (data) {
           var file = new Blob([data], {type: 'application/pdf'});
           var fileURL = URL.createObjectURL(file);
           window.open(fileURL);
    });
45
répondu User4567 2014-09-12 12:46:00

Moyens ont un coup d'oeil sur le code suivant:

Sur Le Contrôleur Secondaires -

$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 () {                        
           });

côté 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>

vous pouvez aussi choisir L'angle ng-pdfviewer et visualisez votre pdf en utilisant ses fichiers js.

7
répondu Gurupreet 2015-06-11 17:09:55

regardez PDF.JS. Il s'agit d'une bibliothèque javascript côté client qui peut récupérer un flux pdf et le rendre côté client. Angular est incapable de lire un pdf, donc ce n'est pas un problème d'angle.

1
répondu Lee Willis 2014-09-11 08:54:44

Java: Méthode Get

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();
1
répondu Vinay Adki 2016-02-26 12:57:02

le problème avec l'utilisation de config.responsabiletype est que le service $http exécute toujours le responsietransformer par défaut et tente de convertir la réponse en JSON. De plus, vous envoyez les en-têtes accept par défaut. Voici un (non testé):

$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);
    });
1
répondu Ed Greaves 2017-04-21 19:53:39