J'utilise AngularJS avec une ressource HTTP pour appeler une API externe et ma réponse est un tableau d'octets. J'ai besoin de transformer ce tableau d'octets en un PDF dans une nouvelle fenêtre. Je n'ai pas vu de très bonnes solutions ici qui fonctionnent avec plusieurs navigateurs ou qui sont du pur javascript. Existe-t-il un moyen de faire ça?
Voici mon code:
Javascript
Document.preview({id: $scope.order.id}, function(data){
// Open PDF Here
var file = new Blob([data], {type: 'application/pdf'});
var fileURL = URL.createObjectURL(file);
window.open(fileURL);
});
Si quelqu'un cherche toujours cela, voici ce que je fais (et travaille):
var pdfAsDataUri = "data:application/pdf;base64,"+byteArray;
window.open(pdfAsDataUri);
Où byteArray correspond aux données que vous recevez. Ce n'est peut-être pas une bonne solution (le tableau d'octets est visible dans l'URL), mais cela fonctionne ...
Vous devez transmettre le type de réponse dans votre appel de service
$http.post('/Service-URL', dataTO, {responseType: 'arraybuffer'});
puis dans le succès de votre appel de données, cela devrait ouvrir le pdf dans une nouvelle fenêtre: -
InfoFactory.getDocument()
.success(function(data) {
var file = new Blob([data], { type: 'application/pdf' });
var fileURL = URL.createObjectURL(file);
window.open(fileURL, "EPrescription");
})
De cette réponse: - https://stackoverflow.com/a/21730535/3645957 par https://stackoverflow.com/users/2688545/michael