Después de una solicitud a una API, recibo un PDF como respuesta. Luego paso esta respuesta a la interfaz para que el usuario la imprima, sin embargo, en la interfaz solo logro obtener un PDF con el número correcto de páginas, pero todas las páginas están en blanco.
Aquí está la solicitud:
const streamResponse = await axios({ url : endpoint_url, method: 'GET', headers: { some authorization parameters, }, responseType: 'stream' }); streamResponse.data.pipe(res)En la interfaz tengo este código:
let blob = new Blob([res.data], { type: "application/pdf" }); let link = document.createElement('a'); link.href = window.URL.createObjectURL(blob); link.download = 'output.pdf'; link.click();También traté de usar la biblioteca del protector de archivos para guardar directamente el PDF pero obtengo el mismo resultado. Los datos en la respuesta son algo así:
"%PDF-1.4 %���� 4 0 obj <</Filter/FlateDecode/Length 1379>>stream x���]s�6����3�N�,���%���N����Nn,۴|8|$�_IX a�����$A���WGGΛv>�6� fs̀�#���%d�l����ٿ�ݐ�덦S�L@#&b=$K��>���y�dOd'Y�]��7EV�7X?�h�>`_� �t%�=��,����!N3Pm,�Ɠ�{� tPYb`������P�jVڭJR����c5�ي��N�$� i�8�Oqlt����wg�#����$�-gC�%��&$Q���q�@���>� �W�i��Ż+TM��s���&uÀk�x$(��|I)8�S^̑�M��y���Na���<)&���hq��D ^�̏#HW�G�5~'�M� .......Sé que es un archivo PDF válido porque puedo guardarlo en el servidor, pero no puedo encontrar ninguna forma de enviarlo al lado del cliente.
También intenté guardarlo en el servidor y luego usar una solicitud usando el siguiente código para entregárselo al cliente:
let pdfFile = fs.createReadStream(pdfFilePath) res.setHeader('Content-Type', 'application/pdf') pdfFile.pipe(res);