Comment lire le flux pdf en angularjs
j'ai obtenu le flux de PDF suivant d'un serveur:
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.
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);
});
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.
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.
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();
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);
});