java - Cómo leer flujo de pdf en angularjs
inputstream (5)
Obtuve la siguiente secuencia de PDF de un servidor:
¿Cómo se puede leer este flujo en AngularJS? Intenté abrir esto como un archivo PDF en una nueva ventana usando el siguiente código:
.success(function(data) {
window.open("data:application/pdf," + escape(data));
});
Pero no puedo ver el contenido en la ventana abierta.
Echa un vistazo a PDF.JS Esta es una biblioteca de JavaScript del lado del cliente que puede obtener una secuencia de pdf y representarla del lado del cliente. Angular no puede leer un pdf, por lo que este no es un problema angular.
El problema con el uso de config.responseType es que el servicio $ http aún ejecuta el ResponseTransformer predeterminado e intenta convertir la respuesta a JSON. Además, está enviando los encabezados de aceptación predeterminados. Aquí hay una alternativa (no probada):
$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);
});
Java: método de obtención
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();
Lo logré cambiando el código de mi controlador
$http.get(''/retrievePDFFiles'', {responseType: ''arraybuffer''})
.success(function (data) {
var file = new Blob([data], {type: ''application/pdf''});
var fileURL = URL.createObjectURL(file);
window.open(fileURL);
});
Por favor, eche un vistazo al siguiente código:
En el lado del controlador:
$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 () {
});
En el lado 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>
También puede ir con Angular ng-pdfviewer y ver su pdf usando sus archivos js.