PDF Blob – janela pop-up que não mostra conteúdo

Eu tenho trabalhado neste problema nos últimos dias. Sem sorte em tentar exibir o stream na tag , tentei exibi-lo em uma nova janela.

A nova janela mostra apenas os controles de PDF insira a descrição da imagem aqui )

Alguma idéia porque o conteúdo do pdf não está mostrando?

CÓDIGO:

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

Você precisa definir o responseType como arraybuffer se quiser criar um blob partir de seus dados de resposta:

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

mais informações: Sending_and_Receiving_Binary_Data

Se você definir { responseType: 'blob' } , não será necessário criar o Blob sozinho. Você pode simplesmente criar url com base no conteúdo da resposta:

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

Eu uso o AngularJS v1.3.4

HTML:

  

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

Serviços JS:

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

Serviços 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; }