estamos desarrollando una aplicación donde necesitamos descargar un archivo PDF generado en el lado del cliente. Estamos utilizando una cadena para introducir el contenido del archivo en una URL de datos, así:
const pdfContent = 'xxxxx'; const element = document.createElement('a'); element.setAttribute('href', `data:application/pdf;charset=utf-8,${encodeURIComponent(pdfContent)}`); element.setAttribute('download', 'mypdf.pdf'); element.style.display = 'none'; document.body.appendChild(element); element.click(); document.body.removeChild(element);Esto funciona muy bien con Microsoft Edge, pero falla en Safari diciendo 'no se permite navegar en el marco superior a la URL de datos'.
La aplicación host no permite window.open() ni ninguno de esos trucos. Intenté usar un iframe pero no funcionó, quizás lo hice mal. También probé otras bibliotecas como file-saver, save-file, todas disponibles en npm con el mismo resultado, no puedo navegar en el marco superior a la URL de datos.
¿Alguna pista? Gracias.
Terminé usando un flujo de blob, que funcionó parcialmente, porque todavía no puedo descargar porque se está ejecutando en un entorno de espacio aislado (complemento de Office). Supongo que tendremos que recurrir a abrir una ventana del navegador y descargar un archivo allí, a menos que alguien tenga una mejor alternativa para los complementos de Office.