Blob PDF: finestra a comparsa che non mostra contenuti

Ho lavorato a questo problema negli ultimi giorni. Senza fortuna nel provare a visualizzare lo stream sul , ho appena provato a visualizzarlo su una nuova finestra.

La nuova finestra mostra solo i controlli PDF inserisci la descrizione dell'immagine qui )

Qualche idea sul perché il contenuto del pdf non viene mostrato?

CODICE:

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

È necessario impostare responseType su arraybuffer se si desidera creare un blob dai dati di risposta:

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

ulteriori informazioni: Sending_and_Receiving_Binary_Data

Se imposti { responseType: 'blob' } , non è necessario creare Blob da solo. Puoi semplicemente creare url in base al contenuto della risposta:

 $http({ url: "...", method: "POST", responseType: "blob" }).then(function(response) { var fileURL = URL.createObjectURL(response.data); window.open(fileURL); }); 

Io uso AngularJS v1.3.4

HTML:

  

Controller JS:

 'use strict'; angular.module('xxxxxxxxApp') .controller('MathController', function ($scope, MathServicePDF) { $scope.downloadPdf = function () { var fileName = "test.pdf"; var a = document.createElement("a"); document.body.appendChild(a); MathServicePDF.downloadPdf().then(function (result) { var file = new Blob([result.data], {type: 'application/pdf'}); var fileURL = window.URL.createObjectURL(file); a.href = fileURL; a.download = fileName; a.click(); }); }; }); 

Servizi JS:

 angular.module('xxxxxxxxApp') .factory('MathServicePDF', function ($http) { return { downloadPdf: function () { return $http.get('api/downloadPDF', { responseType: 'arraybuffer' }).then(function (response) { return response; }); } }; }); 

Servizi Web Java REST – Spring MVC:

 @RequestMapping(value = "/downloadPDF", method = RequestMethod.GET, produces = "application/pdf") public ResponseEntity getPDF() { FileInputStream fileStream; try { fileStream = new FileInputStream(new File("C:\\xxxxx\\xxxxxx\\test.pdf")); byte[] contents = IOUtils.toByteArray(fileStream); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.parseMediaType("application/pdf")); String filename = "test.pdf"; headers.setContentDispositionFormData(filename, filename); ResponseEntity response = new ResponseEntity(contents, headers, HttpStatus.OK); return response; } catch (FileNotFoundException e) { System.err.println(e); } catch (IOException e) { System.err.println(e); } return null; }