Tengo un PDF generado en el navegador y convertido en un objeto blob. El método "tradicional" de descargar esto mediante el uso de javascript para inyectar a etiqueta (código de ejemplo a continuación) abre el PDF en el navegador; sin embargo, esto reemplaza la página que el usuario tenía abierta y hace que pierda cualquier trabajo no guardado. Agregar target="_blank" no cambia esto, y el documento aún se abre en la misma pestaña.
const blob = new Blob([arrayBuffer], { type: "application/pdf" }); const url = URL.createObjectURL(blob); const anchorElement = document.createElement('a'); anchorElement.href = url; anchorElement.download = fileName; anchorElement.target = "_blank"; anchorElement.click(); anchorElement.remove(); URL.revokeObjectURL(url);Estaría feliz con abrir el PDF en una nueva pestaña o forzar su descarga. Como el PDF no se carga desde una URL, no es posible establecer ningún encabezado en él.
Probar;
const blob = new Blob([arrayBuffer], { type: "application/pdf" }); const url = URL.createObjectURL(blob); window.open(url, '_blank');Finalmente, se encontró una solución: la configuración incorrecta del tipo MIME en el blob interrumpe la detección del tipo de archivo del navegador y detiene el inicio de la vista previa integrada.
const blob = new Blob([arrayBuffer], { type: "application/octet-stream" });