Tengo una cadena base 64 que proviene de una llamada a la API. Estoy probando con una cadena base64 de muestra y estoy tratando de convertirla a pdf o una imagen para ver en mi sitio web react.js.
He probado muchas soluciones, pero nada parece funcionar. Encontré un paquete de reacción js que se llama base64topdf . Lo instalé e intenté decodificar la cadena base64 a PDF, pero me da este error "TypeError: fs.writeFileSync is not a function"
No sé qué estoy haciendo mal.
¿Cómo puedo convertir una cadena base64 en un PDF o una imagen en reactjs?
Documentación del paquete https://www.npmjs.com/package/base64topdf
Aquí está mi código:
const base64 = require('base64topdf'); const base64STR = "JVBERi0xLjQKJeLjz9M...." //base64 string const decodedBase64 = base64.base64Decode(base64STR, 'waybill'); console.log(decodedBase64)prueba esto <embed src={`data:application/pdf;base64,${base64STR}`} />
No puede usar este paquete , ya que está escrito para Node.js, no para desarrollo web. Si ingresa al código fuente del paquete, verá que está utilizando el módulo fs o el sistema de archivos.
https://github.com/rpsankar001/base64topdf/blob/master/index.js#L3
Para la web, puedes usar algo como esto:
function downloadPDF(pdf) { const linkSource = `data:application/pdf;base64,${pdf}`; const downloadLink = document.createElement("a"); const fileName = "file.pdf"; downloadLink.href = linkSource; downloadLink.download = fileName; downloadLink.click(); }Vale la pena mencionar que React tiene una característica próxima llamada Componentes del servidor, que le permitirá usar el código del lado del servidor con React. Parece que en un futuro próximo podrá utilizar el paquete.
Consulte: https://reactjs.org/blog/2020/12/21/data-fetching-with-react-server-components.html
Parece que las funciones base64Decode y base64Encode deben usarse solo en NodeJS, su React env no debería poder acceder a fs o Buffer .
Mire el archivo aquí:https://github.com/rpsankar001/base64topdf/blob/master/index.js
También este paquete parece muy vacío, preferiría const decodedBase64 = atob("JVBERi0xLjQKJeLjz9M...."); //base64 string